oracle or 循环 查询,Oracle的循环和Corsor
OR REPLACE TRIGGER trg_test
before update
ON cm_bogie_inandoutreport
DECLARE
//定义游标,查找表里边的每一列的值
cursor c_bogie is select s_bureaunumno c_b_bureaunumno,
s_serialnum c_b_serialnum,
s_trainsetid c_b_trainsetid
from cm_bogie_inandoutreport;
BEGIN
//循环赋值
for v_record in c_bogie loop
update test_mhb t
set t.s_id=v_record.c_b_bureaunumno
where t.s_sex = v_record.c_b_bureaunumno;
dbms_output.put_line(c_b_bureaunumno);
end loop;
END trg_test;
循环
一般循环大概分为三种:基本循环(loop),WHILE循环, FOR循环
1.基本循环
LOOP
statement1;
......
EXIT [WHEN condition];
END LOOP;
当使用基本循环时,无论是否满足条件,语句至少会被执行一次,当condition为TRUE时,会退出循环,并执行END LOOP后的相应操作。当编写基本循环时一定要包含EXIT语句,否则会陷入死循环。另外还应该定义循环控制变量,并且在循环体内修改循环控制变量的值。示例:
SQL> declare
i int:=1;
begin
loop
insert into testloop values(i);
exit when i=10;
i:=i+1;
end loop;
end;
2.WHILE循环
基本循环至少要执行一次循环体内的语句,而对于WHILE循环来说,只有条件为TRUE时,才会执行循环体内的语句。WHILE循环以WHILE …LOOP开始,以END LOOP结束。
WHILE condition LOOP
statement1;
statement2;
.....
END LOOP;
当condition为TRUE时,执行循环体内的语句,而当condition为FALSE或NULL时,会退出循环,并执行END LOOP后的语句。当使用WHILE循环时,应该定义循环控制变量,并在循环体内改变循环控制变量的值。示例:
SQL> declare
i int:=1;
begin
while i<=10 loop
insert into testloop values(i);
i:=i+1;
end loop;
end;
3.FOR循环
当使用基本循环或WHILE循环时,需要定义循环控制变量,并且循环控制变量不仅可以使用NUMBER类型,也可以使用其他数据类型。当使用FOR循环时,ORACLE会隐含定义循环控制变量。
FOR counter in [REVERSE] lower_bound. .upper_bound LOOP
statement1;
statement2;
.......
END LOOP;
在我们查询的时候是用select和into一起使用,把select的内容放到into里边,而cursor给我们提供了一个便利,那么问题来了
什么是游标?
①从表中检索出结果集,从中每次指向一条记录进行交互的机制。
②关系数据库中的操作是在完整的行集合上执行的。
由 SELECT 语句返回的行集合包括满足该语句的 WHERE 子句所列条件的所有行。由该语句返回完整的行集合叫做结果集。
应用程序,尤其是互动和在线应用程序,把完整的结果集作为一个单元处理并不总是有效的。
这些应用程序需要一种机制来一次处理一行或连续的几行。而游标是对提供这一机制的结果集的扩展。
游标是通过游标库来实现的。游标库是常常作为数据库系统或数据访问 API 的一部分而得以实现的软件,
用来管理从数据源返回的数据的属性(结果集)。这些属性包括并发管理、在结果集中的位置、返回的行数,
以及是否能够在结果集中向前和/或向后移动(可滚动性)。
游标跟踪结果集中的位置,并允许对结果集逐行执行多个操作,在这个过程中可能返回至原始表,也可能不返回至原始表。
换句话说,游标从概念上讲基于数据库的表返回结果集。
由于它指示结果集中的当前位置 ,就像计算机屏幕上的光标指示当前位置一样,“游标”由此得名。
2,游标有什么作用?
①指定结果集中特定行的位置。
②基于当前的结果集位置检索一行或连续的几行。
③在结果集的当前位置修改行中的数据。
④对其他用户所做的数据更改定义不同的敏感性级别。
⑤可以以编程的方式访问数据库。
3、游标怎么用
例子1:
/* conn scott/tiger */
Declare
Cursor myCur is select empno,ename,sal from emp;
vna varchar2(10);
vno number(4);
vsal number(7,2);
Begin
open myCur;
fetch myCur into vno,vna,vsal;
dbms_output.put_line(vno||‘ ‘||vna||‘ ‘||vsal);
close myCur;
End;
/
例子2:使用loop遍历游标。
/* conn scott/tiger */
Declare
Cursor myCur is select ename,job,sal,empno from emp;
varE myCur%rowType;
Begin
if myCur%isopen = false then
open myCur;
dbms_output.put_line(‘Opening...‘);
end if;
loop
fetch myCur into varE;
exit when myCur%notfound;
dbms_output.put_line(myCur%rowCount||‘ ‘||vare.empno||‘ ‘||vare.ename||‘ ‘||vare.sal);
end loop;
if myCur%isopen then
Close myCur;
dbms_output.put_line(‘Closing...‘);
end if;
End;
其实游标还是挺好用的,就和Select 。。。into...一样,游标大家把他当作是一个表就可以,只不过这个游标还是指向咱们查询出来表的第一行。
版权声明:本文为博主原创文章,未经博主允许不得转载。
Oracle的循环和Corsor
标签:数据库 cursor
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉
本文系统来源:http://blog.csdn.net/lovemenghaibin/article/details/47763769
oracle or 循环 查询,Oracle的循环和Corsor相关推荐
- oracle 数据库循环查询语句怎么写,sql循环查询(sql语句循环查询详解)
sql循环查询(sql语句循环查询详解) 2020-07-24 11:15:51 共10个回答 select*fromawheret_idin('3','4');select*fromawheret_ ...
- oracle字段去重查询,oracle怎么去重查询
oracle怎么去重查询 oracle去重查询的方法是: oracle 数据库多字段去重 方法介绍:distinct 关键字.group by .row_number ()over(partition ...
- oracle分组聚合查询,Oracle中分组查询group by用法规则解析
本篇文章小编给大家分享一下Oracle中分组查询group by用法规则解析,文章介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. Oracle中group by ...
- oracle关联分组查询,oracle中关联查询、分组查询
高级查询 1.关联查询 作用:可以跨越多表查询 --查询出员工的名字和他所在部门的的名字 //古老的写法 select first_name,name from s_emp,s_dept where ...
- oracle分页排序查询,Oracle分页查询中排序与效率问题解决方法详解
本文将结合作者近日工作中,在ORACLE数据库分页查询时,遇到一个小问题,为大家讲解如何解决Oracle分页查询中排序与效率问题. 原始未分页查询Sql代码如下: select ROWNUM rn, ...
- oracle hive 数据类型,查询oracle数据字典,并对应出hive的数据类型
SQL开始 select t2.owner||'.'||t2.TABLE_NAME 源表名, 'dl_{0}_seq.'||'tt_{1}_'||lower(t2.table_name) hive表名 ...
- Oracle系列:查询Oracle所有实例名字
#查询Oracle所有实例名字 shell# su - oracle shell# sqlplus / as sysdba SQL> select instance_name from v$in ...
- oracle 数据库怎么查询,Oracle 数据库基础查询
1.1文件存储 对数据的存储需求一直存在.数据保存的方式,经历了手工管理.文件管理,数据库管理阶段. 文件存储方式保存数据的弊端: 1.缺乏对数据的整体管理,数据不便修改: 2.不利于数据分析和共享; ...
- oracle日期时间范围查询,Oracle的日期时间范围查询-Oracle
Oracle日期时间范围查询 Sql代码 /* 日期时间范围查询 */ ---- 创建日期时间测试表-------------------– www.2cto.com create table ...
最新文章
- 41、OrthoMCL和mcl软件进行基因家族分析
- cv mat保存图片_(七)神秘的Mat
- 对HTTPCONNECTION的理解
- C++ 关于“堆对象和栈对象”
- C#获取 Flv视频文件播放时间长度等信息
- CAD中怎么将Z轴归零?CADZ轴归零教程
- KB2999226安装提示 此更新不适用你的计算机
- 实验二 任务二 体重测量
- 【数仓】数据质量监控
- 【PTA】斐波那契数列第n项
- windows安装paddlepaddle踩坑教程
- Django学习日志三:模型层
- Android实现网页图片下载器
- 华为——宏达电最需要害怕的新对手
- Java如何创建一个文件对象
- 递归遍历与for循环遍历:递归遍历实现、理解简单
- 什么是“ parentalcontrolsd”,为什么它在我的Mac上运行?
- 【Ray】ray.remote和option
- 红叶李之虚拟机以及Centos安装
- 开放式式商业模式_开放式办公室最符合行政人员而不是公司的最大利益