sql >> Database teknologi >  >> RDS >> Oracle

Returnerer en markør fra en indre procedure til ydre procedure i oracle pl/sql

Her er et eksempel på opkaldsprocedurer, der har REF CURSOR OUT-parametre.

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.

I dette tilfælde opretter jeg en SQL*Plus substitutionsvariabel rc for at demonstrere, hvordan man kalder p2. Hvis du kalder det i noget andet end SQL*Plus, vil syntaksen være en smule anderledes, men det generelle princip vil være det samme.

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. Få insert_id for alle rækker indsat i en enkelt mysqli-forespørgsel (flere værdier)

  2. (Oracle/SQL) Flet alle datatyper til en enkelt kolonne

  3. Fejl 508 - Ressourcegrænse er nået (php+mysql+jquery) websted

  4. mySQL Distinct Deltag?