ストアド プロシージャにカーソルがあります。クエリからいくつかのデータを選択し、そのデータをカーソルに挿入してから、別のクエリからいくつかのデータを選択して、そのデータを同じカーソルに追加したいと考えています。
これどうやってするの?
ストアド プロシージャにカーソルがあります。クエリからいくつかのデータを選択し、そのデータをカーソルに挿入してから、別のクエリからいくつかのデータを選択して、そのデータを同じカーソルに追加したいと考えています。
これどうやってするの?
カーソルは、SQL ステートメントの読み取り専用ハンドルです。カーソルにデータがありません。カーソルにデータを追加することはできません。カーソルでできることは、次の行をフェッチすることだけです。
カーソルを開くために使用される SQL ステートメントをUNION
、2 つの異なる SQL ステートメントを一緒に変更することができます。つまり、
OPEN rc FOR
SELECT <<column list>>
FROM table1
UNION ALL
SELECT <<column list>>
FROM table2;
RETURN rc;
プロシージャの戻り値がここでこれを参照する方法がわからない単純な ref_cursor を使用しています
create or replace function test_ref() return sys_refcursor is
temp sys_refcursor;
begin
open temp for 'select * from hr.employees ;
return v_rc;
end;
/