Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Trả lại con trỏ từ thủ tục bên trong sang thủ tục bên ngoài trong oracle pl / sql

Đây là một ví dụ về việc gọi các thủ tục có tham số 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.

Trong trường hợp này, tôi đang tạo một biến thay thế SQL * Plus rc để trình bày cách gọi p2. Nếu bạn đang gọi nó bằng thứ gì đó không phải SQL * Plus, thì cú pháp sẽ hơi khác một chút nhưng nguyên tắc chung sẽ giống nhau.

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. Làm cách nào để xử lý dấu ngoặc kép 'trong SQL

  2. Trong SQL, Làm cách nào để tạo mọi kết hợp duy nhất có thể có của 5! 56?

  3. Chuyển đổi truy vấn Oracle CONNECT BY sang truy vấn SQL Server

  4. Oracle ADF 11g đứng ở đâu trong số các Java EE Framework?

  5. Tìm giá trị tối thiểu thứ N của giá trị Varchar trong Oracle