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

ऑरैकल पीएल/एसक्यूएल में एक आंतरिक प्रक्रिया से बाहरी प्रक्रिया में एक कर्सर लौटाना

यहां कॉलिंग प्रक्रियाओं का एक उदाहरण दिया गया है जिसमें REF CURSOR OUT पैरामीटर हैं।

SQL> create or replace procedure p1(
  2    p_empno in emp.empno%type,
  3    p_rc   out sys_refcursor
  4  )
  5  as
  6  begin
  7    open p_rc
  8     for
  9     select *
 10       from emp
 11      where empno = p_empno;
 12  end;
 13  /

Procedure created.

SQL> create or replace procedure p2(
  2    p_empno  in emp.empno%type,
  3    p_rc    out sys_refcursor
  4  )
  5  as
  6  begin
  7    p1( p_empno, p_rc );
  8  end;
  9  /

Procedure created.

इस मामले में, मैं एक एसक्यूएल * प्लस प्रतिस्थापन चर आरसी बना रहा हूं ताकि यह प्रदर्शित किया जा सके कि पी 2 को कैसे कॉल किया जाए। अगर आप इसे SQL*Plus के अलावा किसी और चीज़ में कॉल कर रहे हैं, तो सिंटैक्स थोड़ा अलग होगा लेकिन सामान्य सिद्धांत समान होगा।

SQL> var rc refcursor;
SQL> exec p2( 7900, :rc );

PL/SQL procedure successfully completed.

SQL> print rc

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM
---------- ---------- --------- ---------- --------- ---------- ----------
    DEPTNO   FAKE_COL        FOO
---------- ---------- ----------
      7900 SM2        CLERK           7698 03-DEC-81        950
        30          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. एक समूह में एक रिकॉर्ड का मूल्य बहिष्कृत करें यदि कोई अन्य मौजूद है v2

  2. Oracle DB से java.sql.SQLException के रूप में त्रुटि प्राप्त करने में सक्षम नहीं:Io अपवाद:नेटवर्क एडेप्टर कनेक्शन स्थापित नहीं कर सका

  3. रैंक () एसक्यूएल या ऐसा कुछ

  4. oracle sqlplus में तालिका डेटा को अधिक स्पष्ट रूप से कैसे प्रदर्शित करें?

  5. एसक्यूएल में अल्पविराम से अलग आईडी से नाम प्राप्त करें