質問: emp_rec.empno; end if; end loop; end; / commit; 3. selectでsalを確認すると200増えている(2倍) id name sal dept 1 taro 200 10 2 hanako 100 20 1 taro 200 10 2 hanako 100 20 個人的には下記のような値になると思っていました。 言葉で説明するのが難しいのですが、心当たりのある方がいらっしゃったらお答え願います。 よろしくお願い致します。 id name sal dept 1 taro 100 10 2 hanako 100 20 1 taro 100 10 2 hanako 100 20
回答: 同じデータが2件ある状態で、最初のカーソルの実行結果はどうなるか、考えてみましょう。 emp_curは deptno=10の物を取得するのですから、2件ヒットします。 さてここで、2件をforでループさせてます。 ループ内でsalが1000よりも小さいものに対して+100を実行しているので、 updateは2回走ります。 1回目のupdateで0→100に変わります。 2回目のupdateで100→200に変わります。 何の問題もないとおもいます。 ※deptno/empnoがどちらもdeptを意味しているとした場合です。 あなたのサンプルのカラム名がおかしいので、正確な事はいえないのですが。 ano1.さんへ。 オラクルの場合、forのすぐ後ろの変数は自動変数なので、宣言不要なんですよ。