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

डिफ़ॉल्ट मान के साथ तर्कों की सूची प्राप्त करें

आपको नीचे दिए गए कोड नमूने की नस में, 10g में plsql प्रोग्रामिंग का सहारा लेना पड़ सकता है। यह समाधान निश्चित रूप से कुछ अर्थों में क्रूर-बल है, क्योंकि आप मूल रूप से बहुत निम्न-स्तरीय प्राइमेटिव का उपयोग करके फ़ंक्शन/प्रक्रिया घोषणा पार्सर का हिस्सा लिखते हैं। हालांकि, रेगुलर एक्सप्रेशन फ़ंक्शन 10g में भी उपलब्ध नहीं हैं ...

कोड का सार है:

  • प्रक्रिया/कार्य घोषणाओं के स्रोत कोड पंक्तियों पर पुनरावृति करें
  • सबसे हाल ही में घोषित रूटीन का नाम नोट करें
  • 'DEFAULT' कीवर्ड वाली सभी पंक्तियों का विश्लेषण करें, तर्क नाम और डिफ़ॉल्ट मान विनिर्देश प्राप्त करें (यह कोड नमूने में विस्तार से उल्लिखित नहीं है)।

नुकसान से सावधान रहें:

  • बहुस्तरीय घोषणाएं
  • सी-शैली की टिप्पणियां जिनमें सी-शैली की टिप्पणी शामिल है, शुरुआती तार (एक ला /* ब्ला ब्ला / ब्ला ब्ला **/ )
  • कीवर्ड वाले स्ट्रिंग अक्षर

आशा है कि वैसे भी मदद करता है, सादर।

कोड:

DECLARE
   l_arg_and_more    VARCHAR2(400);
   l_current_unit    VARCHAR2(400);
   l_default_spec    VARCHAR2(400);
   l_offset_default  BINARY_INTEGER;
   l_offset_eoname   BINARY_INTEGER;
BEGIN
   FOR i IN (
        select text
         from all_source
        where owner = '<name of owner>'
          and name = '<object name>'
          and type in ( 'PACKAGE', 'PROCEDURE', 'FUNCTION')
          and text not like '--%'
     order by line
   ) LOOP
      IF i.text LIKE '%FUNCTION%' OR i.text LIKE '%PROCEDURE%' THEN
         IF i.text LIKE '%FUNCTION%' THEN
            l_current_unit    := LTRIM(SUBSTR(i.text, INSTR(i.text, 'FUNCTION') + LENGTH('FUNCTION')), ' ');
            l_offset_eoname   := INSTR(l_current_unit, ' ');              
            IF l_offset_eoname = 0 OR l_offset_eoname > INSTR(l_current_unit, '(') THEN
               l_offset_eoname   := INSTR(l_current_unit, '(');
            END IF;
            IF l_offset_eoname <> 0 THEN
               l_current_unit := SUBSTR(l_current_unit, 1, l_offset_eoname-1);
            ELSE
               l_current_unit := 'unidentified';
            END IF;
         END IF;
      END IF;
      --
      IF i.text LIKE '%DEFAULT%' THEN
         l_offset_default  := INSTR (i.text, 'DEFAULT');
         l_arg_and_more    := SUBSTR(i.text, 1, l_offset_default - 1);
         l_default_spec    := SUBSTR(i.text, l_offset_default + LENGTH('DEFAULT') + 1);
         --
         -- process l_arg_and_more to get the arg name, l_default_spec for the default value
         --
      END IF;
   END LOOP;              
END;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. हाइबरनेट 4.3.5 v$session.program कॉन्फ़िगरेशन गुण को अनदेखा करता है

  2. Oracle SQL डेवलपर में टेबलस्पेस कैसे जांचें?

  3. IN खंड के लिए पैरामीटर के साथ Oracle संग्रहीत कार्यविधि

  4. Oracle में प्रतिशत वार गणना के आधार पर कई कॉलम अपडेट करें

  5. Oracle में पुनरावर्ती क्वेरी