如何在SQL中使用循环结构

 时间:2026-02-15 03:33:02

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

例一:使用FOR循环


--------------------------------------------
CREATE PROCEDURE 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;
END FOR;
END;

2、例二:使用LOOP循环


----------------------------------------
CREATE PROCEDURE 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
---------WHERE CURRENT OF C1;
--ELSE
------LEAVE loop_label;
--END IF;
END LOOP loop_label;
CLOSE C1;
END;

3、例三:使用WHILE循环


---------------------------------------
CREATE PROCEDURE 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;

4、例四:使用REPEAT循环


------------------------------------------------
CREATE PROCEDURE 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;
  • QQ群如何批量删除群成员
  • 火影忍者如何查看世界频道玩家的详细信息
  • win10快速从视频提取音频
  • 奥拉星在哪里进行装备配置
  • 笔记本玩游戏、英雄联盟、CSGO掉帧怎么解决?
  • 热门搜索
    成都到西双版纳旅游 北京周边 旅游 qq旅游 浙江旅游统计系统 福建漳州旅游 旅游管理专业描述 中国旅游摄影网论坛 湖北旅游局官网 户外旅游网 楚雄旅游景点大全