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
---------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中使用循环结构的更多相关文章
- SQL中的循环、for循环、游标
我们使用SQL语句处理数据时,可能会碰到一些需要循环遍历某个表并对其进行相应的操作(添加.修改.删除),这时我们就需要用到咱们在编程中常常用的for或foreach,但是在SQL中写循环往往显得那么吃 ...
- (转)SQL中的循环、for循环、游标
我们使用SQL语句处理数据时,可能会碰到一些需要循环遍历某个表并对其进行相应的操作(添加.修改.删除),这时我们就需要用到咱们在编程中常常用的for或foreach,但是在SQL中写循环往往显得那么吃 ...
- Sql中获取表结构(字段名称,类型,长度,说明)
Sql中获取表结构(字段名称,类型,长度,说明) SELECT TableName = OBJECT_NAME(c.object_id), ColumnsName = c.name, Descript ...
- sql中多层循环示例(有游标)
在需求处理中,我们会遇到需要通过SQL多层循环来处理的问题.如:A表中有8条数据,B表中有10条数据,需要实现A表中的每1条数据对应B表中的10条数据,最后就有了80条数据,从而实现一对多的关系.那如 ...
- PL/SQL中LOOP循环控制语句
在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...
- C语言中的循环结构与选择结构
1. 为什么使用循环? 重复执行某段代码 2. while(条件){ 循环体: } 当条件成立的时候就执行循环体,条件不成立,就退出循环,继续执行while后面的语句 3. for ( 初始表达式 : ...
- Oracle PL/SQL中的循环处理(sql for循环)
今天来说下Oracle中的循环迭代处理,因为从自己的博客统计中看到,不少网友都搜索了关键字"SQL FOR循环",所以打算在这里说下个人的理解. PL/SQL也和我们常用的编程语言 ...
- JS中的循环结构
[循环结构的执行步骤]1.声明循环变量:2.判断循环条件3.执行循环体操作4.更新循环变量然后循环执行2-4,直到条件不成立时,跳出循环.while循环()中的表达式,运算结果可以是各种类型,但是最终 ...
- Java中的循环结构
1.while循环结构 语法: while(循环条件){ //循环操作 } while循环结构流程图: 举例: int i = 1; while(i <= 100){ System.out.pr ...
随机推荐
- elasticsearch聚合操作——本质就是针对搜索后的结果使用桶bucket(允许嵌套)进行group by,统计下分组结果,包括min/max/avg
分析 Elasticsearch有一个功能叫做聚合(aggregations),它允许你在数据上生成复杂的分析统计.它很像SQL中的GROUP BY但是功能更强大. 举个例子,让我们找到所有职员中最大 ...
- Django model操作
一.各种查询统计操作 def all(self) # 获取所有的数据对象 def filter(self, *args, **kwargs) # 条件查询 # 条件可以是:参数,字典,Q def ...
- Liunx 简单的命令说明
cd命令在linux中用来切换或者进入目录,路径还分为相对路径和绝对路径 cd 命令:切换当前目录至其他目录 cd /:加上斜杠表示是进入到根目录. pwd命令:查看当前路径. ()cd 进入用户主目 ...
- 网站之robots.txt文件
一.robots.txt是什么? robots.txt是一个纯文本文件,在这个文件中网站管理者可以声明该网站中不想被搜索引擎访问的部分,或者指定搜索引擎只收录指定的内容. 当一个搜索引擎(又称搜索 ...
- MySQL索引的设计、使用和优化
原文:http://bbs.landingbj.com/t-0-243071-1.html MySQL索引概述 所有MySQL列类型可以被索引.对相关列使用索引是提高SELECT操作性能的最佳途径.根 ...
- Oracle如何扩展表空间
一: --查看表空间的名字及文件所在位置 select tablespace_name, file_id, file_name, ), ) total_space from sys.dba_data_ ...
- mybatis入门配置和调试
欢迎转载http://www.cnblogs.com/jianshuai520/p/8669177.html大家一起努力,如果看的时候有图片半边遮挡起来的话,右键查看图片,就可以观看完整的图片,具体怎 ...
- vue组件star开发基于vue-cli
<template> <div class="stars"> <div v-for="(item,ind) in num" :ke ...
- 使用node写一个简单的页面操作
let http = require('http'); let urlStr = require('url'); let fs = require('fs'); let path = require( ...
- 理解git工作区和暂存区
版本库 在工作区目录中有一个.git文件,这个其实不是工作区而是Git的版本库 版本库中包含两个部分,一个是暂存区index/stage,另一个是git自动为我们创建的第一个分支master,以及一个 ...