3
私はDB2の動的なループにFOR
ループの静的SQL文から次のスクリプトを変換したいと思います。具体的にはプロシージャのパラメータからtablenameを取り出し、FOR DO
ループ内のSQL文で使用します。forループ内のDB2プロシージャの変数としてTablename
出発点は、このスクリプトです:
CREATE PROCEDURE P()
LANGUAGE SQL
BEGIN ATOMIC
DECLARE fullname CHAR(40);
FOR v AS cur1 CURSOR FOR
SELECT firstnme, midinit, lastname FROM employee
DO
SET fullname = v.lastname || ',' || v.firstnme
||' ' || v.midinit;
INSERT INTO tnames VALUES (fullname);
END FOR;
END
私はこのような何かやりたい:
CREATE PROCEDURE P(IN TABLENAME VARCHAR(128) DEFAULT 'TABLE1')
LANGUAGE SQL
BEGIN ATOMIC
DECLARE fullname CHAR(40);
FOR v AS cur1 CURSOR FOR
SELECT firstnme, midinit, lastname FROM TABLENAME
DO
SET fullname = v.lastname || ',' || v.firstnme
||' ' || v.midinit;
INSERT INTO tnames VALUES (fullname);
END FOR;
END
これを実行する方法はありますか?私はSTATEMENT
を試しましたが、FOR LOOP
と動作させることはできません。
何のためにまだ解決していますが、中にカーソルを必要としませんあなたの最初のスクリプト。実際、なぜあなたがtnamesテーブルが必要なのかはわかりません。 –
@ダンブルクックは返事をありがとう。 'DO .. END FOR'文の中にあるものは本当に問題ではありません。私は他の何かをするでしょう、私はただそれを単純にしたいと思っていました。実際の問題は、プロシージャのパラメータに応じて異なるテーブルで同じ操作を実行していることです。 – deltascience
エラーが発生していますか、または問題は何ですか? – Rams