2015-11-18 85 views
0

爲什麼我的更新語句會說 - 「不能將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 

回答

0

錯誤消息來自一個紀錄gitb_auto_debit_upload爲其選擇(更新裏面的一個)語句返回沒有行。

您的更新語句處理gitb_auto_debit_upload的所有記錄。 您的選擇(您用來測試狀態值的語句)語句僅存在gitb_daily_log中記錄存在的那些記錄。

您需要將更新語句更改爲僅更新那些select返回行或將NVL()放在select上的那些行。

+0

謝謝。我現在知道了。 –