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

पोस्टग्रेएसक्यूएल पैरामीटराइज्ड ऑर्डर बाय / लिमिट इन टेबल फंक्शन

plpgsql फ़ंक्शन में कुछ भी गलत नहीं है कुछ और जटिल के लिए। एकमात्र स्थिति जहां प्रदर्शन को नुकसान हो सकता है, जब एक plpgsql फ़ंक्शन नेस्टेड होता है, क्योंकि क्वेरी प्लानर बाहरी क्वेरी के संदर्भ में निहित कोड को और अधिक अनुकूलित नहीं कर सकता है जो इसे धीमा कर सकता है या नहीं।
इसमें अधिक विवरण बाद में उत्तर:

  • PostgreSQL फ़ंक्शंस में भाषा sql और भाषा plpgsql के बीच अंतर

मामले में बहुत सारे CASE . की तुलना में बहुत आसान है एक प्रश्न में खंड:

CREATE OR REPLACE FUNCTION get_stuff(_param text, _orderby text, _limit int)
  RETURNS SETOF stuff AS
$func$
BEGIN
   RETURN QUERY EXECUTE '
      SELECT *
      FROM   stuff
      WHERE  col = $1
      ORDER  BY ' || quote_ident(_orderby) || ' ASC
      LIMIT  $2'
   USING _param, _limit;
END
$func$  LANGUAGE plpgsql;

कॉल करें:

SELECT * FROM get_stuff('hello', 'col2', 100);

नोट

RETURN QUERY EXECUTE . का उपयोग करें एक बार में क्वेरी के परिणाम वापस करने के लिए।

quote_ident() Use का इस्तेमाल करें पहचानकर्ताओं के लिए SQLi से सुरक्षा के लिए।
या format() कुछ और जटिल के लिए। देखें:

  • तालिका नाम PostgreSQL फ़ंक्शन पैरामीटर के रूप में

USING . के साथ पैरामीटर मान पास करें एक बार फिर कास्टिंग, उद्धरण और SQLi से बचने के लिए क्लॉज।

सावधान रहें कि पैरामीटर और कॉलम नामों के बीच नामकरण विरोध न बनाएं। मैंने अंडरस्कोर (_ . के साथ पैरामीटर नाम प्रीफ़िक्स किया है ) उदाहरण में। बस मेरी निजी पसंद।

संपादन के बाद आपका दूसरा कार्य काम नहीं कर सकता, क्योंकि आप केवल parent लौटाते हैं जबकि वापसी प्रकार घोषित किया जाता है SETOF stuff . आप कोई भी . घोषित कर सकते हैं वापसी प्रकार आपको पसंद है, लेकिन वास्तविक वापसी मूल्यों को घोषणा से मेल खाना चाहिए। आप RETURNS TABLE का उपयोग करना चाह सकते हैं उसके लिए।



  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. कैसे IsFinite () PostgreSQL में काम करता है

  3. अद्वितीय पहचानकर्ता के बिना डुप्लिकेट पंक्तियों को कैसे हटाएं

  4. PostgreSQL व्यू के लिए जहां पैरामीटर पास करें?

  5. PgAdmin4 चलाने का प्रयास करने में त्रुटि