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

目前成都创新互联公司已为1000多家的企业提供了网站建设、域名、虚拟空间、成都网站托管、企业网站设计、上高网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
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中循环结构的使用
                
                文章起源:http://www.csdahua.cn/qtweb/news33/3433.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网