解答 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
---------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;

例四:使用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中使用循环结构的更多相关文章

  1. SQL中的循环、for循环、游标

    我们使用SQL语句处理数据时,可能会碰到一些需要循环遍历某个表并对其进行相应的操作(添加.修改.删除),这时我们就需要用到咱们在编程中常常用的for或foreach,但是在SQL中写循环往往显得那么吃 ...

  2. (转)SQL中的循环、for循环、游标

    我们使用SQL语句处理数据时,可能会碰到一些需要循环遍历某个表并对其进行相应的操作(添加.修改.删除),这时我们就需要用到咱们在编程中常常用的for或foreach,但是在SQL中写循环往往显得那么吃 ...

  3. Sql中获取表结构(字段名称,类型,长度,说明)

    Sql中获取表结构(字段名称,类型,长度,说明) SELECT TableName = OBJECT_NAME(c.object_id), ColumnsName = c.name, Descript ...

  4. sql中多层循环示例(有游标)

    在需求处理中,我们会遇到需要通过SQL多层循环来处理的问题.如:A表中有8条数据,B表中有10条数据,需要实现A表中的每1条数据对应B表中的10条数据,最后就有了80条数据,从而实现一对多的关系.那如 ...

  5. PL/SQL中LOOP循环控制语句

    在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...

  6. C语言中的循环结构与选择结构

    1. 为什么使用循环? 重复执行某段代码 2. while(条件){ 循环体: } 当条件成立的时候就执行循环体,条件不成立,就退出循环,继续执行while后面的语句 3. for ( 初始表达式 : ...

  7. Oracle PL/SQL中的循环处理(sql for循环)

    今天来说下Oracle中的循环迭代处理,因为从自己的博客统计中看到,不少网友都搜索了关键字"SQL FOR循环",所以打算在这里说下个人的理解. PL/SQL也和我们常用的编程语言 ...

  8. JS中的循环结构

    [循环结构的执行步骤]1.声明循环变量:2.判断循环条件3.执行循环体操作4.更新循环变量然后循环执行2-4,直到条件不成立时,跳出循环.while循环()中的表达式,运算结果可以是各种类型,但是最终 ...

  9. Java中的循环结构

    1.while循环结构 语法: while(循环条件){ //循环操作 } while循环结构流程图: 举例: int i = 1; while(i <= 100){ System.out.pr ...

随机推荐

  1. H5 marquee标签

    39-marquee标签 内容 属性: direction: 设置滚动方向 left/right/up/down scrollamount: 设置滚动速度, 值越大就越快 loop: 设置滚动次数, ...

  2. Python api接口和SQL数据库关联

    数据库表创建 服务器环境配置.连接 .操作.数据库 API接口  原则:

  3. UnderWater+SDN论文之二

    ---- Software-defined underwater acoustic networking platform and its applications source: Ad Hoc Ne ...

  4. Jmeter监控服务器笔记

    Jmeter监控服务器-CPU,Memory,Disk,Network性能指标 本文主要说一下如何通过JMeter插件来监控服务器CPU.内存.磁盘.网络等相关资源. 一.下载 首先进入网址https ...

  5. spring aop学习记录

    许多AOP框架,比较常用的是Spring AOP 与AspectJ.这里主要学习的Spring AOP. 关于AOP 日志.事务.安全验证这些通用的.散步在系统各处的需要在实现业务逻辑时关注的事情称为 ...

  6. IdentityServer4【Introduction】之支持的规范

    支持的规范 identityserver实现了下面的规范 OpenID Connect OpenID Connect Core 1.0 (spec) OpenID Connect Discovery ...

  7. laravel门面和服务提供者使用

      关于laravel门面和服务提供者使用的一点见解,门面之词,不足之处,还请多多指教. 在laravel中,我们可能需要用到自己添加的类时,可以建立一个文件夹专门存放类文件,也可以使用laravel ...

  8. (二)类数组对象HTMLCollection

    HTMLCollection 表示 HTML 元素的集合. 下面的几种方式将返回 HTMLCollection对象: html: <body> <ul id="box&qu ...

  9. Spring boot+ logback环境下,日志存放路径未定义的问题

    日志路径未定义 环境:Spring boot + logback 配置文件: <configuration> <springProfile name="dev"& ...

  10. 解决小程序webview缓存机制

    在打开webview的时候在地址后面加上随机数或者字符串 并且H5页面使用文件hash