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

फ़ंक्शन पैरामीटर सूचियां कैसे प्राप्त करें (इसलिए मैं एक फ़ंक्शन छोड़ सकता हूं)

उस उद्देश्य के लिए पोस्टग्रेज का एक समर्पित कार्य है। पोस्टग्रेज 8.4 के साथ पेश किया गया। मैनुअल:

<ब्लॉकक्वॉट>

pg_get_function_identity_arguments(func_oid) ... फ़ंक्शन की पहचान करने के लिए तर्क सूची प्राप्त करें (डिफ़ॉल्ट मानों के बिना) ...

pg_get_function_identity_arguments किसी फ़ंक्शन की पहचान करने के लिए आवश्यक तर्क सूची देता है, जिस रूप में उसे ALTER FUNCTION के भीतर प्रदर्शित होना होगा , उदाहरण के लिए। यह फ़ॉर्म डिफ़ॉल्ट मानों को छोड़ देता है।

उसका उपयोग करना (और format() , पोस्टग्रेज 9.1 के साथ पेश किया गया, निम्नलिखित क्वेरी आपके खोज शब्दों से मेल खाने वाले कार्यों को छोड़ने के लिए डीडीएल स्टेटमेंट जेनरेट करती है:

SELECT format('DROP %s %I.%I(%s);'
            , CASE WHEN p.proisagg THEN 'AGGREGATE' ELSE 'FUNCTION' END
            , n.nspname
            , p.proname
            , pg_catalog.pg_get_function_identity_arguments(p.oid)
             ) AS stmt
FROM   pg_catalog.pg_proc p
JOIN   pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE  p.proname = 'dblink'                     -- function name
-- AND n.nspname = 'public'                     -- schema name (optional)
-- AND pg_catalog.pg_function_is_visible(p.oid) -- function visible to user
ORDER  BY 1;

सिस्टम कैटलॉग pg_proc पोस्टग्रेज 11 . में बदला गया . proisagg prokind . द्वारा प्रतिस्थापित किया गया था , सच्ची संग्रहीत कार्यविधियाँ जोड़ी गईं। आपको अनुकूलन करने की आवश्यकता है। देखें:

  • अपने सभी कार्यों को PostgreSQL में कैसे छोड़ें?

रिटर्न:

                  stmt
---------------------------------------------------
 DROP FUNCTION public.dblink(text);
 DROP FUNCTION public.dblink(text, boolean);
 DROP FUNCTION public.dblink(text, text);
 DROP FUNCTION public.dblink(text, text, boolean); 

उदाहरण में चार मिलान मिले क्योंकि dblink अतिभारित कार्यों का उपयोग करता है।
DROP चलाएँ चुनिंदा बयान!

वैकल्पिक रूप से , आप वस्तु पहचानकर्ता प्रकार के लिए सुविधाजनक कास्ट का उपयोग कर सकते हैं regprocedure जो तर्क प्रकारों सहित एक पूर्ण फ़ंक्शन हस्ताक्षर देता है:

-- SET LOCAL search_path = '';  -- optional, to get all names schema-qualified
SELECT format('DROP %s %s;'
            , CASE WHEN proisagg THEN 'AGGREGATE' ELSE 'FUNCTION' END
            , oid::regprocedure
             ) AS stmt
FROM   pg_catalog.pg_proc
WHERE  proname = 'dblink'   -- function name
ORDER  BY 1;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेबियन पर पोस्टग्रेज से पुराने डेटा को हटाने के लिए क्रॉन जॉब

  2. मैं sql या phpPgAdmin का उपयोग करके PostgreSQL डेटाबेस के लिए डेटाबेस एन्कोडिंग कैसे बदल सकता हूँ?

  3. पूर्णांकों का विभाजन 0 . लौटाता है

  4. डेटाडम्प लोड करते समय Django प्रोजेक्ट को sqlite3 बैकएंड से postgresql में स्विच करना विफल हो जाता है

  5. एलेम्बिक का उपयोग करके एक एनम फ़ील्ड को बदलना