IBM DB2 中的动态记录复制 SQL

Dynamic record duplication in IBM DB2 SQL

我需要复制特定 table 的一行,但在相同的复制行中我必须更改主键。在我的例子中,主键是一个三位数的年份。例子:今年是221,明年是222。

我正在使用主键为 999 的记录,我将复制它。现在我需要让它成为动态的(在测试时不必是动态的),这样我就可以将它用于多个 table,因为它将从 RPGLE 中的过程调用。

我之前用过一个非常静态的方法:

    INSERT INTO Table 
       SELECT PK -- the PK is the new year, in this case 222 and all other fields are added as well.
          FROM Table 
       WHERE PK = 999;

而且我已经尝试过类似的东西(我知道这行不通):

INSERT INTO Table WHERE PK = 222
SELECT * FROM Table WHERE PK = 999;

我希望这些信息足以让我了解我想要实现的目标以及实现目标的可能性。

提前致谢

如果您使用了表,则不必为列命名。

因此您可以构建动态语句并立即执行 :

declare global temporary table copyrows as (
  select * from table1 where pk = 999
) with data with replace;
update session.copyrows set pk = 222;
insert into table1 select * from session.copyrows;