- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【PL/SQL】CURSOR ・・・ IS SELECT・・・FOR UPDATE が機能しない)
PL/SQLのCURSORでFOR UPDATEが機能しない
このQ&Aのポイント
- カーソルの宣言で、FOR UPDATEを指定しているのに、WHERE CURRENT OFでの更新が効かない問題について質問します。
- OracleのバージョンはOracle8i Release 8.1.6.0.0です。
- カーソルでループを回し、各行の値を更新しようとしていますが、値が正しく書き換わりません。原因が分かる方は助言をお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
明らかにダメなところとしては・・ コミットが書いてあることですかね。 update TEST_TBL x set TODOFU_CD=(select y.TODOFU_CD from M_POST y where y.POST_NO=x.POST_NO); update TEST_TBL set TODOFU_CD=0 where TODOFU_CD is null; の2文で書いてはダメなんでしょうかね? (件数が多すぎる?)
お礼
korochanさん、回答ありがとうございました。 原因は別にありましたが、例に挙げて頂いたSQLは、 考え付かなかったものですので、とても勉強になりました。 今後もよろしくお願いします。
補足
原因が分かりました。 変数todofu_cdと、テーブルの列名TODOFU_CDが同じであったことです。 これを訂正したら、正常に更新されました。 投稿してすぐに気づいたのですが、1件も回答のない状態での、質問者からの追記方法が分からず、そのままになってしまいました。すいませんでしたm(_ _)m あと、korochanさんのご指摘に関してですが、 このPGMで扱うテーブルは、かなり大量のデータを保持します。 その為、速度性とキャッシュ領域不足エラー解消を求めて、このような形で組んでみました。