0
カーソルを戻すoracle sqlストアド・プロシージャがあります。 このカーソルは、ストアドプロシージャ本体に複雑なselect文の値を取得します(下の例では、select文をシンプルにしています)。Oracle sqlのストアド・プロシージャの戻り値であるカーソル値に従ってデータを操作する方法は?
その後、私は2つのことのためにカーソルを使用したい: 1.ストアドプロシージャ本体内の別のテーブル内のいくつかの値を更新するために、そのデータを使用してストアドプロシージャ 2の戻り値として使用してください
私はそれを行う方法を見つけることができませんでしたので、その間に(複雑な)select文を複製し、別のカーソルを別のテーブルを更新するための値にしなければなりませんでした。
create or replace procedure sp_GetBuildings(returned_cursor OUT SYS_REFCURSOR,
timeFrameHrsParam number) is
v_buildingID Buildings.buildingId%type;
cursor t_result is
select customerId
from (select buildingId from Buildings) b
inner join Customers c on c.building_id = b.building_id;
begin
open returned_cursor for
select customerId
from (select buildingId from Buildings) b
inner join Customers c on c.building_id = b.building_id;
for t in t_result
loop
v_buildingID := t.building_id;
update Buildings set already = 1 where building_id = v_buildingID ;
end loop;
commit;
end sp_GetBuildings;
select文のレプリケーションを節約できる解決策を教えてください。