DB2 sql存储过程:host-variable不能在动态sql语句中使用(SQL0312N)

时间:2012-03-28 09:41:06

标签: stored-procedures db2

我在使用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语句中使用两个嵌套循环中的值,但这似乎不是问题。

非常感谢!

0 个答案:

没有答案