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

Oracle में किसी अन्य के साथ संग्रहीत कार्यविधि को कॉल करें

आपकी संग्रहीत कार्यविधियाँ कोडित के रूप में कार्य करती हैं। समस्या अंतिम पंक्ति के साथ है, यह आपकी किसी भी संग्रहीत कार्यविधि को लागू करने में असमर्थ है।

SQL*Plus में तीन विकल्प हैं:call , exec , और एक विषम PL/SQL ब्लॉक।

call एक SQL कीवर्ड प्रतीत होता है, और SQL संदर्भ में प्रलेखित है। http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_4008.htm#BABDEHHG सिंटैक्स आरेख इंगित करता है कि कॉल रूटीन में कोई तर्क पारित नहीं होने पर भी पेरेंटेसिस की आवश्यकता है।

CALL test_sp_1();

एक अनाम PL/SQL ब्लॉक PL/SQL है जो किसी नामित प्रक्रिया, फ़ंक्शन, ट्रिगर आदि के अंदर नहीं है। इसका उपयोग आपकी प्रक्रिया को कॉल करने के लिए किया जा सकता है।

BEGIN
    test_sp_1;
END;
/

exec एक SQL*Plus कमांड है जो उपरोक्त अनाम ब्लॉक के लिए एक शॉर्टकट है। EXEC <procedure_name> DB सर्वर को BEGIN <procedure_name>; END;

पूरा उदाहरण:

SQL> SET SERVEROUTPUT ON
SQL> CREATE OR REPLACE PROCEDURE test_sp 
  2  AS 
  3  BEGIN 
  4      DBMS_OUTPUT.PUT_LINE('Test works'); 
  5  END;
  6  /

Procedure created.

SQL> CREATE OR REPLACE PROCEDURE test_sp_1 
  2  AS
  3  BEGIN
  4      DBMS_OUTPUT.PUT_LINE('Testing'); 
  5      test_sp; 
  6  END;
  7  /

Procedure created.

SQL> CALL test_sp_1();
Testing
Test works

Call completed.

SQL> exec test_sp_1
Testing
Test works

PL/SQL procedure successfully completed.

SQL> begin
  2      test_sp_1;
  3  end;
  4  /
Testing
Test works

PL/SQL procedure successfully completed.

SQL> 


  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. Oracle में बिना समय के केवल दिनांक प्राप्त करें

  3. ओआरए-00838

  4. डेटाफाइल वाले डेटाबेस के लिए आरएसी स्थापित करना

  5. ऑरैकल टेबल या दृश्य अंदर संग्रहीत प्रक्रिया से मौजूद नहीं है