我需要复制特定表的一行,但在同一行中,我必须更改主键。在我的情况下,主键是一个三位数的年份。例如:今年是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;
我希望这是足够的信息来理解我想要实现的目标,并且这是可能的
提前感谢
如果使用表,则不必命名列。
因此,您可以构建动态语句并立即执行:
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;