Oracle
 sql >> база данни >  >> RDS >> Oracle

Връщане на курсор от вътрешна процедура към външна процедура в oracle pl/sql

Ето един пример за извикване на процедури, които имат параметри 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.

В този случай създавам SQL*Plus заместваща променлива rc, за да демонстрирам как да извикам p2. Ако го извиквате в нещо различно от 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. Как да експортирате анализирани данни от Python към таблица на Oracle в SQL Developer?

  2. ORA-01821:форматът на датата не е разпознат, грешка за ISO 8601 дата с местно време

  3. Какво е курсор в oracle

  4. SQL Server еквивалент на Bulk Collect в Oracle

  5. Hibernate връща списък с нули, въпреки че изпълненият SQL връща стойности