単純な関数を書くと、次をdoSomething
実行して結果を取得できます。
select doSomething() from dual;
OUT
しかし、 (別の int パラメータと共に) カーソルが渡されるプロシージャを呼び出したい場合、クエリ内でそのプロシージャを呼び出して、カーソルの結果にアクセスするにはどうすればよいでしょうか?
クエリ内でそれを呼び出すことは必須ではありません..その手順の結果にアクセスしたいだけです
次のようなプロシージャを作成できます
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]
あなたはこのようなことをすることができます
select doSomething(cursor (select int_col from your_table)) colname from dual
このヘルプを願っています