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

निष्पादन तत्काल का उपयोग कर स्थानीय प्रक्रिया को कैसे निष्पादित करें?

जैसा कि अमारिलो ने कहा था कि आप स्थानीय रूप से परिभाषित प्रक्रिया को गतिशील रूप से निष्पादित नहीं कर सकते हैं, क्योंकि यह SQL दायरे में मौजूद नहीं है जो गतिशील अनुभाग उपयोग करेगा।

आपके द्वारा वर्णित स्थिति यह है कि सभी प्रक्रियाओं को अनाम ब्लॉक के DECLARE . में परिभाषित किया गया है अनुभाग और आप एक क्वेरी चला रहे हैं जो आपको बताती है कि उनमें से किसे निष्पादित करना है - और संभवतः जो आपको पास करने के लिए तर्क भी देता है। आप बस एक if . का उपयोग कर सकते हैं /else निर्माण या case उपयुक्त प्रक्रियाओं को निष्पादित करने के लिए कथन, कुछ इस तरह:

DECLARE
  ...
BEGIN
  FOR data IN (SELECT procname, arg1, arg2, ... from <your_query>) LOOP
    CASE data.procname
      WHEN 'OPENLOG' THEN
        openlog(data.arg1);
      WHEN 'WRITELOG' THEN
        writelog(data.arg1, data.arg2);
      WHEN ...
        ...
      ELSE
         -- handle/report an invalid procedure name
         -- or skip the `ELSE` and let CASE_NOT_FOUND be thrown
    END CASE;
  END LOOP;
END;
/

आपको बस एक WHEN की जरूरत है प्रत्येक प्रक्रिया के लिए शर्त और उपयुक्त प्रक्रिया कॉल। आपके पास ELSE भी हो सकता है किसी भी अनपेक्षित प्रक्रिया नाम को पकड़ने के लिए या CASE_NOT_FOUND अपवाद (ORA-06592) फेंक दिया जाएगा, जो इस बात पर निर्भर करता है कि यदि ऐसा होता है तो आपको क्या करना होगा।



  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. मुझे ORA-01401 क्यों मिल रहा है:कॉलम के लिए डाला गया मान बहुत बड़ा है - जब मैं सम्मिलित नहीं कर रहा हूँ?

  3. Oracle में अशक्त बनाम खाली स्ट्रिंग

  4. Oracle sql क्वेरी तिथि के अनुसार लगातार रिकॉर्ड समूहित करने के लिए

  5. Oracle इंस्टेंट क्लाइंट स्थापित करना