循环语句

----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

 

你可能感兴趣的:(sql,c,数据库,db2,存储,2010)