IFおよびELSEステートメントを使用して、どのようにストアード・プロシージャーを「深さINTEGER」に基づいて実行するかを定義しますか?具体的にはDB2ストア・プロシージャーのIFステートメントの使用
--#SET TERMINATOR/
CREATE PROCEDURE STOREP2(IN str_in VARCHAR(1), IN depth INTEGER)
LANGUAGE SQL MODIFIES SQL DATA
DYNAMIC RESULT SETS 1
CRSUBJ: BEGIN
DECLARE C1 CURSOR WITH RETURN FOR
SELECT T1.COLUMN1, T1.COLUMN2 FROM TABLE1 AS T1 WHERE T1.COLUMN1=str_in
UNION
SELECT T2.COLUMN1, T2.COLUMN2 FROM TABLE1 AS T1, TABLE1 AS T2 WHERE T1.COLUMN1=str_in AND T2.COLUMN1=T1.COLUMN2
UNION
SELECT T3.COLUMN1, T3.COLUMN2 FROM TABLE1 AS T1, TABLE1 AS T2, TABLE1 AS T3 WHERE T1.COLUMN1=str_in AND T2.COLUMN1=T1.COLUMN2 AND T3.COLUMN1=T2.COLUMN2
UNION
SELECT T4.COLUMN1, T4.COLUMN2 FROM TABLE1 AS T1, TABLE1 AS T2, TABLE1 AS T3, TABLE1 AS T4 WHERE T1.COLUMN1=str_in AND T2.COLUMN1=T1.COLUMN2 AND T3.COLUMN1=T2.COLUMN2 AND T4.COLUMN1=T3.COLUMN2;
OPEN C1;
RETURN;
END CRSUBJ/
感謝:)
これは、再帰的なセットアップの場合と同じように見えます。あなたは木構造をナビゲートしていますか?どのDB2のバージョンを使用していますか?最新のもののほとんどは再帰的なCTEをサポートしています。これは、深さを制御する複数の方法を提供します。 –