Sql 无法获取设置参数内的SELECT(从另一个表)更新

Sql 无法获取设置参数内的SELECT(从另一个表)更新,sql,database,db2,Sql,Database,Db2,下面的查询给出了如下查询所示的错误。有可能做我想做的事吗?内部选择查询独立工作。如果删除select语句并替换为一个数字,则更新将起作用。 这是在DB210.1上实现的 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)

下面的查询给出了如下查询所示的错误。有可能做我想做的事吗?内部选择查询独立工作。如果删除select语句并替换为一个数字,则更新将起作用。 这是在DB210.1上实现的

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'
错误消息:

[更新-0行,0.000秒][错误代码:-20165,SQL状态: 428FL]DB2SQL错误:SQLCODE=-20165,SQLSTATE=428FL,SQLERRMC=null, 驾驶员=3.63.75


我认为你的语法是错误的。应该是

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

您需要具体化数据更改表,然后才能使用它更新另一个表。一种方法是:

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'
)

我想我不同意,但我也认为我没有完全理解你的意思。你能准确地发布你认为代码应该是什么样子吗?你有机会看一下手册中的错误解释吗?@mustaccio是的,我查过了,但找不到任何有用的结果。如果你发现了什么,请分享。