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

पैकेज घोषणा की सामग्री

आप ALL_ARGUMENTS डेटा डिक्शनरी व्यू, या उसके भाई USER_ARGUMENTS और DBA_ARGUMENTS।

एक उदाहरण के लिए मैंने निम्नलिखित पैकेज बनाया:

CREATE OR REPLACE PACKAGE demo AS
    PROCEDURE p_none;
    PROCEDURE p_two(a INTEGER, b INTEGER);

    FUNCTION f_none RETURN INTEGER;
    FUNCTION f_three(c INTEGER, q INTEGER, z INTEGER) RETURN INTEGER;
END;

इसके बाद मैंने इसके खिलाफ निम्नलिखित क्वेरी चलाई:

SQL> select object_name, argument_name, sequence, in_out
  2    from all_arguments
  3   where package_name = 'DEMO'
  4   order by object_name, sequence;

OBJECT_NAME                    ARGUMENT_NAME                    SEQUENCE IN_OUT
------------------------------ ------------------------------ ---------- ---------
F_NONE                                                                 1 OUT
F_THREE                                                                1 OUT
F_THREE                        C                                       2 IN
F_THREE                        Q                                       3 IN
F_THREE                        Z                                       4 IN
P_NONE                                                                 0 IN
P_TWO                          A                                       1 IN
P_TWO                          B                                       2 IN

यहां आप हमारे पैकेज में कार्यों और प्रक्रियाओं के सभी तर्क देख सकते हैं। ध्यान दें कि दो कार्यों में से प्रत्येक के लिए वापसी मूल्य के लिए एक शून्य तर्क नाम के साथ एक अतिरिक्त प्रविष्टि है। साथ ही, जिस प्रक्रिया में कोई तर्क नहीं है, उसमें एक शून्य तर्क नाम और एक शून्य SEQUENCE के साथ एक पंक्ति है। मूल्य।

इसलिए, सभी कार्यों को सूचीबद्ध करने के लिए, आप इस दृश्य में सभी प्रविष्टियों को एक शून्य तर्क नाम और एक SEQUENCE के साथ खोज सकते हैं मान 0 के बराबर नहीं है:

SQL> select distinct object_name
  2    from all_arguments
  3   where package_name = 'DEMO'
  4     and argument_name is null
  5     and sequence != 0;

OBJECT_NAME
------------------------------
F_THREE
F_NONE

इसी तरह से सूचीबद्ध करने की प्रक्रिया थोड़ी पेचीदा है:

SQL> select distinct object_name
  2    from all_arguments a1
  3   where package_name = 'DEMO'
  4     and (   sequence = 0
  5          or not exists (select 0
  6                           from all_arguments a2
  7                          where a2.package_name = 'DEMO'
  8                            and a2.object_name = a1.object_name
  9                            and a2.argument_name is null));

OBJECT_NAME
------------------------------
P_TWO
P_NONE

हालांकि यह दृष्टिकोण प्रक्रियाओं और कार्यों के साथ काम करता प्रतीत होता है, मुझे नहीं पता कि पैकेज हेडर के भीतर घोषित पैकेज-स्कोप चर, प्रकार और अन्य चीजों को पैकेज स्पेक को पार्स किए बिना कैसे सूचीबद्ध किया जाए, जैसा कि @wweicker द्वारा सुझाया गया है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. आप Oracle डेटाबेस में एक अस्थायी तालिका कैसे बनाते हैं?

  2. Oracle थिन ड्राइवर बनाम OCI ड्राइवर। भला - बुरा?

  3. ओरेकल क्लॉब कॉलम को क्वेरी करना

  4. आदेशित परिणाम सेट से पंक्तियों का 'रन' ढूँढना

  5. टॉमकैट 8 सर्वर के साथ Oracle9 डेटाबेस से कनेक्शन बनाते समय AbstractMethodError प्राप्त करना