「SELECT 〜 FOR UPDATE OF 製品番号」といったようにFOR UPDATE OFがつけば、
どういう意味になるのでしょうか?
答え:
カーソルを使ってUPDATEする場合に、明示的に「この列を更新する」ことを
宣言します。
宣言した列以外をUPDATEしようとすれば、エラーになります。
declare cr1 cursor for
select * from t1
where c1=:xc1
for update of c2,c3
xc1←条件の値
open cr1
fetch cr1 into :xc1,:xc2,:xc3
fetchが成功なら
↓
update t1
set c2=c2+100,c3=c3/100
where current of cr1
close cr1
上記のupdateでは、カーソル宣言の「for update of 列名[,列名・・・]」で
指定した列以外の更新は禁止です。
RDBMSによりますが、この指定を有効に使うと性能向上が図れる場合もあります。
他は答える:
この質問・回答は役に立ちましたか?
ウェブサイトのユーザーによる情報ポスト、JPQA.comのない保証の正しさ.