Хранимая процедура DB2 SQL: переменная хоста не может использоваться в динамическом операторе SQL (SQL0312N) - PullRequest
0 голосов
/ 28 марта 2012

У меня есть следующий код в хранимой процедуре 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 вложенных цикла, и я использую значения обоих из них в операторе вставки, но, похоже, это не проблема.

Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...