如何使用IF和ELSE语句来定义要根据“深度INTEGER”运行多少存储过程? (例如,如果用户使用1所述的深度周长,仅第一部分将被加工的)在DB2 Store过程中使用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,这将为您提供多种方法来控制深度。 – 2012-04-20 15:51:33