根据另一个表中的列更新列

时间:2015-11-18 13:44:43

标签: oracle

为什么我的更新语句说 - “无法将null插入gitb_auto_debit_upload.status”。第二个查询返回了一个记录,其中process_status列的值为'P'。

 Update gitb_auto_debit_upload a
              set status = (select nvl(process_status,'O') from gitb_daily_log b
               where b.interface_code      = 'PHP661OW'
                    and b. process_ref_no    = '4708'
                   and a.refno                           = b.external_ref_no
                   and a.recordno                   = b. seq_no
              ) ;




  select * from gitb_auto_debit_upload a, gitb_daily_log b  where b.interface_code      = 'PHP661OW'
                    and b. process_ref_no    = '4708'
                   and a.refno                           = b.external_ref_no
                   and a. recordno                   = b. seq_no

1 个答案:

答案 0 :(得分:0)

错误消息来自gitb_auto_debit_upload中的记录,其中select(更新中的一个)语句不返回任何行。

您的update语句处理gitb_auto_debit_upload的所有记录。 您的select(用于测试状态值的那个)语句仅表示gitb_daily_log中存在记录的那些记录。

您需要将update语句更改为仅更新select返回行的行或将NVL()更改为select。