网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > 数据库 > 正文

在SQL中使用循环结构

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

FOR,LOOP,WHILE,REPEAT是UDB/400的一种内部循环控制,用于遍历表中符合条件的每一行记录。

例如:
目的:更新employee库,把所有北京籍员工的工资提高10%

例一:使用FOR循环

  1. -------------------------------------------- 
  2.  CREATE PROCEDURE QGPL/TEST_FOR 
  3. LANGUAGE SQL 
  4.  BEGIN 
  5.  FOR each_record AS 
  6. ---cur01 CURSOR FOR 
  7. ------SELECT * FROM code,salary,city from employee where city="Beijing" 
  8. ---------DO 
  9. ------------UPDATE employee 
  10. ------------SET salary=salary * 1.1 
  11. ------------WHERE CURRENT OF cur01; 
  12. ENDFOR; 
  13. END

 

例二:使用LOOP循环

  1. ---------------------------------------- 
  2. CREATE PROCEDURE QGPL/TEST_LOOP 
  3. LANGUAGE SQL 
  4. BEGIN 
  5. DECLARE code_v char(10); 
  6. DECLARE salary_v integer
  7. DECLARE city_v char(20); 
  8.  
  9. DECLARE C1 CURSOR FOR 
  10. ---SELECT code,salary,city FROM employee WHERE city="Beijing"; 
  11. OPEN C1; 
  12. loop_label: 
  13. LOOP 
  14. FETCH C1 INTO code_v,salary_v,city_v; 
  15. --IF SQLCODE=0 THEN  
  16. ------SET salary_v=salary_v*1.1; 
  17. ------UPDATE employee SET salary=salary_v 
  18. ---------WHERE CURRENT OF C1; 
  19. --ELSE 
  20. ------LEAVE loop_label; 
  21. --END IF; 
  22. END LOOP loop_label; 
  23. CLOSE C1; 
  24. END

 

例三:使用WHILE循环

  1. --------------------------------------- 
  2. CREATE PROCEDURE QGPL/TEST_WHILE 
  3. LANGUAGE SQL 
  4. BEGIN 
  5. DECLARE code_v char(10); 
  6. DECLARE salary_v integer
  7. DECLARE city_v char(20); 
  8. DECLARE at_end integer
  9.  
  10. DECLARE C1 CURSOR FOR 
  11. ---SELECT code,salary,city FROM employee WHERE city="Beijing"; 
  12. OPEN C1; 
  13.  
  14. SET at_end=0; 
  15. WHILE at_end = 0 DO 
  16. --FETCH C1 INTO code_v,salary_v,city_v; 
  17. --IF SQLCODE=0 THEN  
  18. ------SET salary_v=salary_v*1.1; 
  19. ------UPDATE employee SET salary=salary_v 
  20. ---------WHERE CURRENT OF C1; 
  21. --ELSE 
  22. ------SET at_end=1; 
  23. --END IF; 
  24. END WHILE; 
  25. CLOSE C1; 
  26. END

 

例四:使用REPEAT循环

  1. ------------------------------------------------ 
  2.  CREATE PROCEDURE QGPL/TEST_REPEAT 
  3.  LANGUAGE SQL 
  4.  BEGIN 
  5.  DECLARE code_v char(10); 
  6.  DECLARE salary_v integer
  7.  DECLARE city_v char(20); 
  8.   
  9.  DECLARE C1 CURSOR FOR 
  10.  ---SELECT code,salary,city FROM employee WHERE city="Beijing"; 
  11.  OPEN C1; 
  12.   
  13.  repeat_label: 
  14.  REPEAT 
  15.  --FETCH C1 INTO code_v,salary_v,city_v; 
  16.  --IF SQLCODE=0 THEN  
  17.  ------SET salary_v=salary_v*1.1; 
  18.  ------UPDATE employee SET salary=salary_v 
  19.  ---------WHERE CURRENT OF C1; 
  20.  --END IF; 
  21.  --UNTIL SQLCODE<>0; 
  22.  END REPEAT repeat_loop; 
  • 上一篇资讯: 另类随机读大表数据
  • 下一篇资讯: 去掉ID重复的数据
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师