PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

Postgres क्वेरी विंडो में पैरामीटर के साथ मेरे तदर्थ SQL का परीक्षण कैसे करें

विभिन्न विकल्प।

शुद्ध SQL . में "चर" रखने के लिए CTE में पैरामीटर प्रदान करें :

WITH var(lastname) AS (SELECT 'Troy'::varchar(16))
SELECT *
FROM   users, var v
WHERE  lastname = v.lastname;

यह किसी भी . के लिए काम करता है query.
CTE var . के बाद से एक एकल पंक्ति holds रखता है इसे CROSS JOIN के साथ जोड़ना सुरक्षित है FROM खंड के अंत में - वास्तव में अल्पविराम के बाद इसे जोड़ने के साथ संक्षिप्त रूप सबसे अच्छा हो सकता है क्योंकि स्पष्ट रूप से शामिल वाक्यविन्यास अल्पविराम से पहले बांधता है। अतिरिक्त तालिका उपनाम v वाक्य रचना को और छोटा करने के लिए वैकल्पिक है।

या सीटीई के बिना सस्ता। BTW, क्यों varchar(16) ? बस text का उपयोग करें :

SELECT *
FROM   users
JOIN  (SELECT 'Troy'::text) var(lastname) USING (lastname)
WHERE  lastname = var.lastname;

या अस्थायी तालिका . का उपयोग करें सभी . के लिए समान भूमिका निभाने के लिए एक ही सत्र के भीतर प्रश्न। सत्र के अंत के साथ अस्थायी तालिकाएँ समाप्त हो जाती हैं।

CREATE TEMP TABLE var AS
SELECT text 'Troy' AS lastname;

ANALYZE var;  -- temp tables are not covered by autovacuum

SELECT * FROM users JOIN var USING (lastname);
  • अस्थायी तालिकाओं के बारे में और autovacuum

या आप DO . का उपयोग कर सकते हैं @Houari जैसे बयान यहां दिए गए या पसंद किए गए:

  • PostgreSQL बाहरी कार्यों को लूप करता है। क्या यह संभव है?

ध्यान दें कि आप DO . से मान वापस नहीं कर सकते बयान। (आप RAISE ... . का उपयोग कर सकते हैं हालांकि।) और आप SELECT . का उपयोग नहीं कर सकते हैं plpgsql में लक्ष्य के बिना - DO . में डिफ़ॉल्ट प्रक्रियात्मक भाषा बयान। बदलें SELECT PERFORM . के साथ परिणामों को दूर करने के लिए।

या आप अनुकूलित विकल्प . का उपयोग कर सकते हैं , जिसे आप postgresql.conf . में सेट कर सकते हैं दृश्यमान होने के लिए विश्व स्तर पर

या सत्र की अवधि के लिए और केवल उसी सत्र में . दृश्यमान होने के लिए अपने सत्र में सेट करें :

SET my.lastname = 'Troy';

चर नाम चाहिए एक बिंदु शामिल करें। आप text . तक सीमित हैं इस तरह डेटा प्रकार के रूप में, लेकिन किसी भी डेटा प्रकार को text . के रूप में दर्शाया जा सकता है ...

आप current_setting('my.lastname') . का उपयोग कर सकते हैं मूल्य अभिव्यक्ति के रूप में। जरूरत पड़ने पर कास्ट करें। उदाहरण के लिए:current_setting('my.json_var')::json ...

या SET LOCAL का उपयोग करें प्रभाव केवल वर्तमान लेन-देन . तक बने रहने के लिए . देखें:

  • यूज़र आईडी को PostgreSQL ट्रिगर में पास करना

या आप छोटे IMMUTABLE . का उपयोग कर सकते हैं कार्य वैश्विक . के रूप में निरंतर चर जो केवल विशेषाधिकार प्राप्त उपयोगकर्ता ही हेरफेर कर सकते हैं। देखें:

  • क्या PostgreSQL क्वेरी में नामित स्थिरांक को परिभाषित करने का कोई तरीका है?

या क्लाइंट के रूप में psql के साथ काम करते समय, \set . का उपयोग करें या \gset मेटा-कमांड और परिवर्तनीय प्रतिस्थापन।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL के लिए स्लोनी प्रतिकृति के लिए एक विशेषज्ञ की मार्गदर्शिका

  2. क्या पुनरावर्ती SQL क्वेरी बनाना संभव है?

  3. PostgreSQL और JDBC के साथ ClassNotFoundException

  4. पैरामीटर NULL होने पर कॉलम में DEFAULT मान डालना

  5. रैंडम टुपल्स प्राप्त करने के लिए टेबल्स नमूना और अन्य तरीके