Вот один пример: у процедуры есть только один параметр - OUT
-, который является рекурсором:
SQL> create or replace procedure p_test (par_rc out sys_refcursor)
2 is
3 begin
4 open par_rc for select deptno, dname, loc from dept;
5 end;
6 /
Procedure created.
Чтобы вызвать такую процедуру, вам нужно сохранить результат во что-то. Для этого я объявлю переменную (в SQL* Plus, которая является инструментом, которую я использую для этого примера) и вызову процедуру, используя блок begin-end
, предоставив имя переменной в качестве параметра:
SQL> var l_rc refcursor;
SQL>
SQL> begin
2 p_test (:l_rc);
3 end;
4 /
PL/SQL procedure successfully completed.
Напечатайте результат:
SQL> print l_rc
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL>
Могут быть и другие варианты, которые зависят от того, что вы действительно делаете.