我在使用SQL作为语言的db2存储过程中有以下代码:
[...]
DECLARE v_rps_key INTEGER;
[...]
FOR myrow as (SELECT foo FROM bar) DO
INSERT INTO tbl(a,b,c) select x,y,z from tbl2 where cond1=myrow.x;
--save the generated key
SET v_rls_key = identity_val_local();
--update child-records with parent key
update tbl2 set fkey = v_rls_key where cond1=myrow.x; --error occurs here
END FOR;
表tbl和tbl2的键用
定义Generated By Default as identity (start with 1, increment by 1, cache 20)
当我编译它时,我在标题中得到错误消息:SQL0312N。
基本上我会对来自tbl2的数据进行一些耗时的计算并将它们保存在tbl中。然后我想更新tbl中的外键,以便将带有数据(子记录)的记录连接到带有计算的记录(父记录)。
似乎DB2不允许我在动态SQL语句中使用主机变量。我的问题有解决方案吗?
我在DB2方面经验很少,但多年来一直使用Oracle PL / SQL。
PS:我实际上有2个嵌套循环,并在insert语句中使用两个嵌套循环中的值,但这似乎不是问题。
非常感谢!