2015-03-24 72 views
0

以下查詢給出了查詢下面看到的錯誤。是否有可能做我想做的事情?內部選擇查詢獨立工作。如果我刪除了select語句並用一個數字替換,UPDATE將起作用。 這是在db2 10.1上。無法獲得SET參數中SELECT(來自另一個表)的UPDATE更新

UPDATE tdb2wccu.quot q 
SET q.prr_ls_asmt_id = (
     SELECT prr_ls_asmt_id 
     FROM final TABLE (
       INSERT INTO tdb2wcmd.prr_ls_asmt (creat_ts) 
       VALUES (CURRENT TIMESTAMP) 
       ) 
     ) 
where q.quot_id = 'befc0ec6a6af3c250ac8967f4fd7de56' 

錯誤消息:

[UPDATE - 0 row(s), 0.000 secs] [Error Code: -20165, SQL State: 428FL] DB2 SQL Error: SQLCODE=-20165, SQLSTATE=428FL, SQLERRMC=null, DRIVER=3.63.75

+0

您是否有機會查看手冊中的錯誤說明? – mustaccio 2015-03-25 00:37:18

+0

@mustaccio是的,我查了一下,但無法找到任何有用的結果。如果您發現某些內容,請分享。 – Dale 2015-03-25 13:25:01

回答

-1

我覺得你的語法是錯誤的。它應該是

UPDATE tdb2wccu.quot q 
SET q.prr_ls_asmt_id = prr_ls_asmt_id 
FROM Second_table 
WHERE q1.quot_id = 'befc0ec6a6af3c250ac8967f4fd7de56 
+0

我想我不同意,但我也認爲我並不完全遵循你所說的話。你能準確地發佈你認爲代碼應該是什麼樣子嗎? – Dale 2015-03-24 22:04:59

1

您需要兌現的數據變化表之前,你可以用它來更新另一個表。一種方法:

WITH t1 (newid) AS (
    SELECT prr_ls_asmt_id 
    FROM final TABLE (
    INSERT INTO tdb2wcmd.prr_ls_asmt (creat_ts) 
     VALUES (CURRENT TIMESTAMP) 
) 
) 
SELECT * FROM FINAL TABLE (
    UPDATE tdb2wccu.quot q 
    SET q.prr_ls_asmt_id = (
     SELECT newid FROM t1 
    ) 
    WHERE q.quot_id = 'befc0ec6a6af3c250ac8967f4fd7de56' 
) 
相關問題