IBM DB2 SQL中的动态记录复制

qnzebej0  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(204)

我需要复制一个特定表格的一行,但是在同一个复制行中,我必须更改主键。在我的例子中,主键是一个三位数的年份。例如:今年是221,明年是222。
我正在使用一个主键为999的记录,我将复制它。现在我需要使它成为动态的(在测试时不必是动态的),这样我就可以将它用于多个表,因为它将从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;

我希望这是足够的信息,以了解我想要实现什么,并有可能这样做。
先谢谢你

kx1ctssn

kx1ctssn1#

如果使用表,则不必命名列。
因此,您可以构建动态语句并立即执行:

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;

相关问题