如何在DB2 - IBM上的新表中插入更新的行



我需要使用sql动态创建更新,所有更新的行必须在日志表中发送。在microsoft中,我可以使用OUTPUT子句,它将更新的行插入到表中,但我如何在db2中使用sql动态执行此操作?

我有以下表格:

AllCustomers—包含数据库中的所有客户

<表类> Id 名称 tbody><<tr>1约翰2测试

您必须使用SELECT作为最外层的语句,并且在不同的cte中保持内部SELECT,如果您有多个cte的话。
试试这个:

WITH A AS
(
SELECT ID, NAME
FROM FINAL TABLE
(
UPDATE GDPR
SET NAME = 'Some name'
WHERE ID = 1
)
)
SELECT COUNT (1)
FROM FINAL TABLE
(
INSERT INTO GDPR_LOG (ID, NAME)
SELECT * FROM A
) B

更新:
使用动态SQL。
如果您使用某些工具运行该复合语句并在其中正确指定该语句结束符,则必须在整个语句中包含不同于默认终止符(;)的语句终止符(例如,@)。

BEGIN
DECLARE C1 CURSOR FOR S1;

PREPARE S1 FROM  
'
WITH A AS
(
SELECT ID, NAME
FROM FINAL TABLE
(
UPDATE GDPR
SET NAME = ?
WHERE ID = ?
)
)
SELECT COUNT (1)
FROM FINAL TABLE
(
INSERT INTO GDPR_LOG (ID, NAME)
SELECT * FROM A
) B
';

OPEN C1 USING 'Name', 1;
CLOSE C1;

END

相关内容

  • 没有找到相关文章

最新更新