1

単純な関数を書くと、次をdoSomething実行して結果を取得できます。

select doSomething() from dual;

OUTしかし、 (別の int パラメータと共に) カーソルが渡されるプロシージャを呼び出したい場合、クエリ内でそのプロシージャを呼び出して、カーソルの結果にアクセスするにはどうすればよいでしょうか?

クエリ内でそれを呼び出すことは必須ではありません..その手順の結果にアクセスしたいだけです

4

2 に答える 2

1

次のようなプロシージャを作成できます

    CREATE OR REPLACE PROCEDURE your_procedure(out_cursor OUT sys_refcursor)
    IS
    BEGIN
        OPEN out_cursor FOR
            SELECT  employee_name
              FROM  employees;

    END;
    /

プロシージャを作成したら、次のようなカーソルを返す関数でプロシージャをラップします

CREATE OR REPLACE FUNCTION your_function
    RETURN sys_refcursor
AS
    o_param  sys_refcursor;
BEGIN
    o_param := NULL;
    your_procedure(o_param);
    RETURN o_param;
EXCEPTION
    WHEN NO_DATA_FOUND
    THEN
        -- raise                                  

    WHEN OTHERS
    THEN
        -- raise
END your_function;
/

SQL の結果を表示するには、次のようにします。

select your_function from dual;

更新 1

SQL Developerで結果を表示するには

ステップ1

SQL Developer で結果をダブルクリックします

【結果】[1]

ステップ 2 ドットが付いたボタンをシングルクリックします。それは値をポップアップします

[グリッド][2]

于 2012-11-12T08:07:25.880 に答える
0

あなたはこのようなことをすることができます

select doSomething(cursor (select int_col from your_table)) colname from dual

このヘルプを願っています

于 2012-11-12T07:47:06.617 に答える