У меня есть следующий код в хранимой процедуре db2 с использованием SQL в качестве языка:
[...]
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, чтобы записи с данными (дочерние записи) были объединены с записью с вычислением (родительская запись).
Кажется, DB2 не позволяет мне использовать переменные хоста в динамических операторах SQL. Есть ли решение моей проблемы?
У меня очень мало опыта работы с DB2, но я несколько лет работал с Oracle PL / SQL.
PS: На самом деле у меня есть 2 вложенных цикла, и я использую значения обоих из них в операторе вставки, но, похоже, это не проблема.
Большое спасибо!