オープンしたカーソルがcomitで閉じてしまうのが困るときにwith holdを使うと幸せになる話
タイトルの通り。
DECLARE宣言するときに、DECLARE WITH HOLD みたいに書けばいい。
もちろん詳しくはマニュアルを確認してね。
データベースでカーソル開いて読んで閉じてという制御を、データの更新や挿入とは分けて考えられるから幸せ。
ちなみにこれをやらないと何がこまるのかというと、今までフェッチしたデータに対応する条件を覚えておきて、コミットしたあとで、その条件でもう一度カーソルを開き直すとかやらないといけなくなる。めんどくさすぎる。
oracle以外で似たようなことやるにはどうやればいいのかな。