- ベストアンサー
P/L SQLで値が更新されない
- 次のようなプログラムを作成しましたが、ORDER_INFテーブルのKANRYO_DAYの値が更新されません。
- どこが間違っているのでしょうか。
- P/L SQLで値が更新されない
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ただのコピペのミスかもしれませんが、とりあえず1行目のBEGINはいらないです。 と言うかあるとエラーになって実行できないですよね。 プログラム的には間違ってないと思います。 ORDER_NOが一致するデータがないか、KANRYO_DAYの値が同一とかですかね。 LOOP内でdbms_outputなどをつかってデバッグしてみては?
その他の回答 (1)
- 3rd_001
- ベストアンサー率66% (115/174)
SQL> create table ord_search_pattern 2 ( 3 ORDER_NO varchar2(5), 4 KANRYO_DAY varchar2(8) 5 ); 表が作成されました。 SQL> create table ORDER_INF 2 ( 3 ORDER_NO varchar2(5), 4 KANRYO_DAY varchar2(8) 5 ); 表が作成されました。 SQL> insert into ord_search_pattern values('A','20100820'); 1行が作成されました。 SQL> insert into ORDER_INF values('A',null); 1行が作成されました。 SQL> select * from ord_search_pattern ; ORDER KANRYO_D ----- -------- A 20100820 SQL> select * from ORDER_INF ; ORDER KANRYO_D ----- -------- A SQL> SQL> DECLARE 2 CURSOR r_search IS SELECT * FROM ord_search_pattern; 3 BEGIN 4 FOR r IN r_search LOOP 5 UPDATE ORDER_INF t1 6 SET t1.KANRYO_DAY = r.KANRYO_DAY 7 WHERE t1.ORDER_NO = r.ORDER_NO; 8 COMMIT; 9 END LOOP; 10 END; 11 / PL/SQLプロシージャが正常に完了しました。 SQL> select * from ord_search_pattern ; ORDER KANRYO_D ----- -------- A 20100820 SQL> select * from ORDER_INF ; ORDER KANRYO_D ----- -------- A 20100820 更新されますが? データの整合性の問題では?
お礼
回答ありがとうございます。 プログラムは、間違っていないのですね。 データを調べてみます。
お礼
回答ありがとうございます。 プログラムに自信がなかったので、データを調べてみます。