SQL を使用して DB2 のストアド プロシージャを使用してテーブルに挿入する方法を知りたいと思っていました。次のようにテーブルを作成しました。
create table ADCLIBT.Itest
(ITNBR CHAR(15) CCSID 65535 NOT NULL DEFAULT '');
この表には項目のリストが含まれています。このリストを使用して、他のさまざまなフィールドを別のテーブルに挿入したいと考えています。しかし、たとえば、カーソルを使用してこれらの値を 1 つずつ挿入したいとします。次のようにストアドプロシージャを作成しました。
create procedure ADCLIBT.itest1()
LANGUAGE SQL
BEGIN
DECLARE itemno char(15);
DECLARE END_TABLE INT DEFAULT 0;
DECLARE not_found CONDITION FOR SQLSTATE '20000';
DECLARE c CURSOR FOR
select ITNBR from ADCLIBT.ITEMAT;
DECLARE CONTINUE HANDLER FOR not_found
SET END_TABLE = 1;
open c;
fetch from c into itemno;
WHILE END_TABLE = 0 DO
insert into ADCLIBT.ITEST
(ITNBR)
values
(select a.ITNBR from ADCLIBT.ITEMAT a where ITNBR=itemno GROUP BY a.ITNBR);
END WHILE;
Close c;
END;
これは私に無限ループを与えています。無限ループを停止してこれらのレコードを挿入する方法を教えてください。itemno
さらに使用して単一の結果を比較して取得したいので、カーソルを使用したいと思います。