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

sysrefcursorを返す関数の結果を保存する方法は?

    これは、varchar2変数を受け取り、A refcursor(弱く型付けされた)を返す関数です。

     CREATE OR replace FUNCTION fn_return_cur(v IN VARCHAR2)
    RETURN SYS_REFCURSOR
    IS
      c1 SYS_REFCURSOR;
    BEGIN
        OPEN c1 FOR
          SELECT 'ABC'
          FROM   dual
          WHERE  'col1' = v;
    
        RETURN c1;
    END;
    
    /  
    

    これは、カーソル値が関数の引数として渡され、返されたカーソルがOUT引数として渡されるプロシージャです。

     CREATE OR replace PROCEDURE Pr_pass_out_cur(v_2 OUT SYS_REFCURSOR)
    IS
      func_arg  VARCHAR2(3);
      other_arg VARCHAR2(3);
      CURSOR c_2 IS
        SELECT 'ABC' col1,
               'DEF' col2
        FROM   dual;
    BEGIN
        LOOP
            FETCH c_2 INTO func_arg, other_arg;
    
            EXIT WHEN c_2%NOTFOUND;
    
            v_2 := Fn_return_cur(func_arg);
        END LOOP;
    EXCEPTION
      WHEN OTHERS THEN
                 NULL;
    END;
    
    /  
    

    フィードバックをお聞かせください。




    1. PostgreSQL8.4で列のデータ型を文字から数値に変更する方法

    2. ユーザー'[メール保護]'のアクセスが拒否されました(パスワード:NOを使用)

    3. GrailsでのPostgresの構成

    4. 列の列指定子が正しくありません