详解SQL中循环结构的使用

数据库 SQL Server
下文将为您介绍SQL中循环结构的使用的四种方法,供您参考,希望对您学习SQL循环操作能够有所帮助。

循环操作是数据库中经常遇到的操作,那么如何在SQL中使用循环结构呢?下文将带您寻找答案。

FOR,LOOP,WHILE,REPEAT是UDB/400的一种内部循环控制,用于遍历表中符合条件的每一行记录。
例如:
目的:更新employee库,把所有北京籍员工的工资提高10%

例一:使用FOR循环
--------------------------------------------
CREATE PROCEDURE QGPL/TEST_FOR
LANGUAGE SQL
BEGIN
FOR each_record AS
---cur01 CURSOR FOR
------SELECT * FROM code,salary,city from employee where city="Beijing"
---------DO
------------UPDATE employee
------------SET salary=salary * 1.1
------------WHERE CURRENT OF cur01;
ENDFOR;
END;

例二:使用LOOP循环
----------------------------------------
CREATE PROCEDURE QGPL/TEST_LOOP
LANGUAGE SQL
BEGIN
DECLARE code_v char(10);
DECLARE salary_v integer;
DECLARE city_v char(20);

DECLARE C1 CURSOR FOR
---SELECT code,salary,city FROM employee WHERE city="Beijing";
OPEN C1;
loop_label:
LOOP
- FETCH C1 INTO code_v,salary_v,city_v;
--IF SQLCODE=0 THEN
------SET salary_v=salary_v*1.1;
------UPDATE employee SET salary=salary_v#p#
---------WHERE CURRENT OF C1;
--ELSE
------LEAVE loop_label;
--END IF;
END LOOP loop_label;
CLOSE C1;
END;

例三:使用WHILE循环
---------------------------------------
CREATE PROCEDURE QGPL/TEST_WHILE
LANGUAGE SQL
BEGIN
DECLARE code_v char(10);
DECLARE salary_v integer;
DECLARE city_v char(20);
DECLARE at_end integer;

DECLARE C1 CURSOR FOR
---SELECT code,salary,city FROM employee WHERE city="Beijing";
OPEN C1;

SET at_end=0;
WHILE at_end = 0 DO
--FETCH C1 INTO code_v,salary_v,city_v;
--IF SQLCODE=0 THEN
------SET salary_v=salary_v*1.1;
------UPDATE employee SET salary=salary_v
---------WHERE CURRENT OF C1;
--ELSE
------SET at_end=1;
--END IF;
END WHILE;
CLOSE C1;
END;#p#

例四:使用REPEAT循环
------------------------------------------------
CREATE PROCEDURE QGPL/TEST_REPEAT
LANGUAGE SQL
BEGIN
DECLARE code_v char(10);
DECLARE salary_v integer;
DECLARE city_v char(20);

DECLARE C1 CURSOR FOR
---SELECT code,salary,city FROM employee WHERE city="Beijing";
OPEN C1;

repeat_label:
REPEAT
--FETCH C1 INTO code_v,salary_v,city_v;
--IF SQLCODE=0 THEN
------SET salary_v=salary_v*1.1;
------UPDATE employee SET salary=salary_v
---------WHERE CURRENT OF C1;
--END IF;
--UNTIL SQLCODE<>0;
END REPEAT repeat_loop;
CLOSE C1;
END;

总结:四种循环结构实现的功能基本相同,用户可以根据自己的习惯选择使用。
 

 

【编辑推荐】

sql多数据库查询批量插入问题循环

SQL中游标嵌套循环的示例

sql循环插入的语句写法

SQL循环语句的妙用

SQL中UNION指令的用法

责任编辑:段燃 来源: 互联网
相关推荐

2009-09-28 10:09:09

Linux内核Linux循环链表

2010-09-10 14:26:06

SQLFor循环

2009-12-29 10:24:51

Linux内核循环链表

2010-09-17 13:40:43

SQL更新

2010-08-05 09:07:24

2021-04-09 10:37:40

SQL Server数据库排名

2010-09-07 11:53:00

SQL语句

2021-02-03 09:21:59

SQL机器学习ML

2010-09-09 11:12:49

SQL函数DATALENGTH

2021-04-25 09:42:40

SQL递归SQL Server

2010-09-06 14:58:42

SQL函数

2011-08-22 13:28:56

FOR XMLSQL Server

2010-09-10 14:33:32

SQL循环语句

2011-06-09 09:08:00

C#循环结构

2010-09-06 11:05:05

SQL SERVER语句

2009-11-25 10:52:22

PHP函数contin

2011-08-24 09:15:36

SQL Server数FOR XML AUT

2010-09-24 18:52:53

SQL中NOT EXI

2010-09-28 16:36:43

sql中alter

2010-09-08 14:03:41

SQL函数CONVERT
点赞
收藏

51CTO技术栈公众号