sql >> データベース >  >> RDS >> Oracle

oracle pl/sqlの内部プロシージャから外部プロシージャにカーソルを戻す

    これは、REFCURSOROUTパラメーターを持つプロシージャーを呼び出す一例です。

    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.
    

    この場合、p2の呼び出し方法を示すために、SQL*Plus置換変数rcを作成しています。 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. テーブルからのMySQLデータを表示するC++executeQuery()エラー

    2. MySQL行からのQRコードの生成

    3. Bigquery:複数のテーブルを検索し、first_seenとlast_seenで集計します

    4. 日付型のテーブルを作成し、そのデフォルト値をMySQLのCURRENT_DATEとして使用します