Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zwracanie kursora z procedury wewnętrznej do procedury zewnętrznej w oracle pl/sql

Oto jeden przykład wywoływania procedur, które mają parametry 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.

W tym przypadku tworzę zmienną podstawienia SQL*Plus rc, aby zademonstrować, jak wywołać p2. Jeśli wywołujesz go w czymś innym niż SQL*Plus, składnia będzie nieco inna, ale ogólna zasada będzie taka sama.

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. Programista SQL nie chce się uruchomić

  2. Jak wygenerować GUID w Oracle?

  3. Unikalne naruszenie ograniczeń podczas wstawiania:dlaczego? (Wyrocznia)

  4. Ograniczenia przy użyciu DATE

  5. Jak stworzyć dynamiczny sql dla z sys_refcursor w oracle?