• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:P/L SQLで値が更新されない。)

P/L SQLで値が更新されない

このQ&Aのポイント
  • 次のようなプログラムを作成しましたが、ORDER_INFテーブルのKANRYO_DAYの値が更新されません。
  • どこが間違っているのでしょうか。
  • P/L SQLで値が更新されない

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.1

ただのコピペのミスかもしれませんが、とりあえず1行目のBEGINはいらないです。 と言うかあるとエラーになって実行できないですよね。 プログラム的には間違ってないと思います。 ORDER_NOが一致するデータがないか、KANRYO_DAYの値が同一とかですかね。 LOOP内でdbms_outputなどをつかってデバッグしてみては?

toshi_2000
質問者

お礼

回答ありがとうございます。 プログラムに自信がなかったので、データを調べてみます。

その他の回答 (1)

  • 3rd_001
  • ベストアンサー率66% (115/174)
回答No.2

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 更新されますが? データの整合性の問題では?

toshi_2000
質問者

お礼

回答ありがとうございます。 プログラムは、間違っていないのですね。 データを調べてみます。

関連するQ&A