----start
SQL PL 支持的循环语句有 LOOP、WHILE、REPEAT 和 FOR。
一:WHILE 循环
1、语法
WHILE <condition> DO <sql statements>; END WHILE;
2、示例
--连接数据库 CONNECT TO SAMPLE! --创建存储过程 CREATE PROCEDURE TESTWHILE (OUT NUM INT) BEGIN DECLARE I INT DEFAULT 1; SET NUM=0; WHILE I<=10 DO SET NUM=NUM+I; SET I=I+1; END WHILE; END! --调用存储过程 CALL TESTWHILE(?)! --关闭连接 CONNECT RESET!
3、调用
将示例的内容保存为c:/test_while.sql,然后在DB2 命令窗口中执行如下命令 db2 -td! -vf c:/test_while.sql
二:FOR 循环
1、语法
FOR <loop_name> AS <sql statements> DO <sql statements>; END FOR;
2、示例
--连接数据库 CONNECT TO SAMPLE! --创建存储过程 CREATE PROCEDURE TESTFOR (OUT NUM INT) BEGIN SET NUM=0; FOR TEST AS SELECT I FROM ( VALUES (1), (2), (3) ) AS TEMP(I) DO SET NUM=NUM+I; END FOR; END! --调用存储过程 CALL TESTFOR(?)! --关闭连接 CONNECT RESET!
3、调用
将示例的内容保存为c:/test_for.sql,然后在DB2 命令窗口中执行如下命令 db2 -td! -vf c:/test_for.sql
三:LOOP 循环
1、语法
LABEL:LOOP <sql statements>; LEAVE LABEL; END LOOP LABEL;
2、示例
--连接数据库 CONNECT TO SAMPLE! --创建存储过程 CREATE PROCEDURE TESTLOOP (OUT NUM INT) BEGIN DECLARE I INT DEFAULT 1; SET NUM=0; TEST_LOOP:LOOP SET NUM=NUM+I; SET I=I+1; IF I>10 THEN LEAVE TEST_LOOP; END IF; END LOOP TEST_LOOP; END! --调用存储过程 CALL TESTLOOP(?)! --关闭连接 CONNECT RESET!
3、调用
将示例的内容保存为c:/test_loop.sql,然后在DB2 命令窗口中执行如下命令 db2 -td! -vf c:/test_loop.sql
四:REPEAT 循环
1、语法
REPEAT <sql statements>; UNTIL <condition> END REPEAT;
2、示例
--连接数据库 CONNECT TO SAMPLE! --创建存储过程 CREATE PROCEDURE TESTREPEAT (OUT NUM INT) BEGIN DECLARE I INT DEFAULT 1; SET NUM=0; REPEAT SET NUM=NUM+I; SET I=I+1; UNTIL I>10 END REPEAT; END! --调用存储过程 CALL TESTREPEAT(?)! --关闭连接 CONNECT RESET!
3、调用
将示例的内容保存为c:/test_repeat.sql,然后在DB2 命令窗口中执行如下命令 db2 -td! -vf c:/test_repeat.sql
----更多参见:SQL PL 精萃
----声明:转载请注明出处。
----last updated on 2010.2.1
----written by ShangBo on 2010.1.26
----end