私はこのようなOracleストアドプロシージャを持っています(実際のSQLは異なります)
CREATE OR REPLACE PROCEDURE mysp
IS
v_copied_row table%ROWTYPE ;
CURSOR p_copied_rows IS
select *
from table ;
BEGIN
delete from table
where <some condition>
OPEN p_copied_rows ;
LOOP
FETCH p_copied_rows into v_copied_rows ;
<do something with fetched row>
END LOOP
close p_copied_rows;
END;
理想的には、削除された行がカーソルからフェッチしている結果セットの一部であってはならないことを期待していますが、それらはそうです。
私はオラクルが初めてで、ここで何か間違っているかどうかを知りたいですか?
PSいくつかの複雑なことにカーソルを使用する必要があるため、カーソルをSQLに置き換えることはオプションではありません。