यहां कॉलिंग प्रक्रियाओं का एक उदाहरण दिया गया है जिसमें 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