oracle--游标--bai
- --复制表
- create table emp as(select * from scott.emp);
- select * from emp;
- --(1) 最简单的游标
- declare --声明并初始化游标
- cursor v_cur is
- select empno,ename from emp order by empno;
- v_empno emp.empno%type;
- v_ename emp.ename%type;
- begin
- if(not v_cur%isopen) then --打开游标
- open v_cur;
- end if;
- loop --提取记录
- fetch v_cur into v_empno,v_ename;
- if(v_cur%notfound) then --到达末尾,则退出循环
- exit;
- end if;
- dbms_output.put_line('第'||v_cur%rowcount||'条记录:'||v_empno||','||v_ename);
- end loop;
- close v_cur; --关闭游标
- end;
- --(2) 带参数的游标
- --查找指定部门的所有员工
- cursor v_cur(v_deptno number) is
- select empno,ename from scott.emp where deptno = v_deptno order by empno ;
- v_empno scott.emp.empno%type;
- v_ename scott.emp.ename%type;
- v_dno scott.emp.deptno%type;
- begin
- v_dno:='&请输入部门编号:';
- if(not v_cur%isopen) then
- open v_cur(v_dno);
- end if;
- dbms_output.put_line('部门号'||v_dno||'的员工如下:');
- loop
- fetch v_cur into v_empno,v_ename;
- if(v_cur%notfound) then --到达末尾,则退出循环
- exit ;
- end if;
- dbms_output.put_line('第'||v_cur%rowcount||'条记录:'||v_empno||','||v_ename);
- end loop;
- --关闭游标
- close v_cur;
- exception
- when others then
- dbms_output.put_line('提取出错');
- end;
- --(3) 可写游标。让每每个员工工资增加1000元
- declare
- --声明并初始化游标
- cursor v_cur is
- select 1 from scott.emp order by empno
- for update of sal nowait ;
- --v_sal scott.emp.sal%type;
- i number;
- begin
- --打开游标
- if(not v_cur%isopen) then
- open v_cur;
- end if;
- --提取记录
- loop
- fetch v_cur into i;
- if(v_cur%notfound) then --到达末尾,则退出循环
- exit ;
- end if;
- --update scott.emp set sal = sal+10000 where empno = v_empno;
- update scott.emp set sal = sal+10000 where current of v_cur;
- end loop;
- dbms_output.put_line('成功修改了'||v_cur%rowcount||'人的工资');
- --关闭游标
- close v_cur;
- end;
- --(4) 简化方式1
- declare
- --声明并初始化游标
- cursor v_cur is
- select empno,ename from scott.emp order by empno;
- begin
- --提取记录
- for rec in v_cur loop
- dbms_output.put_line('第'||v_cur%rowcount||'条记录:'||rec.empno
- ||','||rec.ename);
- end loop;
- end;
- --(5) 简化方式2
- declare
- --声明并初始化游标
- begin
- --提取记录
- for rec in (select empno,ename from scott.emp order by empno)
- loop
- dbms_output.put_line(rec.empno
- ||','||rec.ename);
- end loop;
- end;
- --(6) 返回游标的函数
- --返回周三入职的员工
- select * from scott.emp where to_char(hiredate,'day')='星期五';
- create or replace function get_emps_hired_oneday
- (
- v_day varchar2
- )return sys_refcursor
- as
- v_cur sys_refcursor;--声明1个局部变量游标,用于返回
- begin
- --打开指定结果集的游标.
- open v_cur for
- select ename,hiredate from scott.emp
- where to_char(hiredate,'day')=v_day;
- return v_cur; --将该记录集的游标返回
- end;
- --调用函数,浏览全部的记录。
- declare
- v_cur sys_refcursor;
- v_ename varchar2(20);
- v_hiredate date;
- begin
- --调用别人写好函数。
- v_cur:= get_emps_hired_oneday('星期五');
- --提取记录
- loop
- fetch v_cur into v_ename,v_hiredate;
- if(v_cur%notfound) then --到达末尾,则退出循环
- exit ;
- end if;
- dbms_output.put_line('第'||v_cur%rowcount||'条记录:'||v_ename||','
- ||to_char(v_hiredate,'yyyy-mm-dd day'));
- end loop;
- --关闭游标
- close v_cur;
- end;
oracle--游标--bai的更多相关文章
- Oracle 游标示例,带异常处理
Oracle游标示例一则,带异常处理. DECLARE CURSOR c_dl IS SELECT ID, NSRSBH, WSPZXH, ZXYY_DM, HZRQ, SWJG_DM, GXSJ F ...
- Oracle游标带参数
Oracle游标是可以带参数的,而SqlServer的游标就不可以了 create or replace procedure a as cursor b(c_id int)is select * fr ...
- Oracle 游标使用(转)
这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 ; ; dbms_output.put_line(sql) loop dbms_output.put_line( ; ; ; r_te ...
- Oracle 游标使用全解(转)
转自:http://www.cnblogs.com/sc-xx/archive/2011/12/03/2275084.html 这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 -- ...
- Oracle游标动态赋值
1. oracle游标动态赋值的小例子 -- 实现1:动态给游标赋值 -- 实现2:游标用表的rowtype声明,但数据却只配置表一行的某些字段时,遍历游标时需fetch into到精确字段 CREA ...
- dapper支持oracle游标
dapper支持oracle游标 Dapper是一个轻型的ORM类.它有啥优点.缺点相信很多朋友都知道了,园里也有很多朋友都有相关介绍,这里就不多废话. 如果玩过Oracle都知道,存储过程基本都是通 ...
- Oracle游标的使用示例
此文是使用Oracle游标的几种方式,for...in会自动打开游标,fetch...into需要手动打开游标,游标类似于一个只会往前移动的指针,每次指向数据集中的一行数据,通过游标可以打开数据集,也 ...
- Oracle游标介绍
Oracle游标使用详解: 游标: 用来查询数据库,获取记录集合(结果集)的指针,我们所说的游标通常是指显式游标,因此从现在起没有特别指明的情况,我们所说的游标都是指显式游标.要在程序中使用游标,必须 ...
- Oracle游标使用
Oracle游标介绍: --声明游标 CURSOR cursor_name IS select_statement --For 循环游标 --()定义游标 --()定义游标变量 --()使用for循环 ...
- [转载]Oracle 游标使用全解
这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 -- 声明游标:CURSOR cursor_name IS select_statement --For 循环游标--(1)定义游标- ...
随机推荐
- MBTiles
MBTiles Specification MBTiles is a specification for storing tiled map data in SQLite databases for ...
- UTFGrid
UTFGrid UTFGrid is a specification for rasterized interaction data. As of version 1.2, it was remove ...
- low security dvwa--SQL Injection(Blind)
1.输入单引号,结果如下: 2.输入永真式 ' and 1=1; -- 结果如下: 多次测试,如果输入的条件为假,就会返回1中的结果,为真则返回2中的结果,由此说明这属于SQL盲注. 3.猜解用户名长 ...
- 中国式商业智能报表ActiveReports免费公开课,10月20日开讲
ActiveReports公开课全方位报表解决方案,满足商业报表五大需求 [开课时间]10月20日[主讲老师]葡萄城报表产品经理[开课形式]网络在线公开课[活动费用]前50名免费 适合人群:报表开发人 ...
- Android开发学习—— ContentProvider内容提供者
* 应用的数据库是不允许其他应用访问的* 内容提供者的作用就是让别的应用访问到你的数据库.把私有数据暴露给其他应用,通常,是把私有数据库的数据暴露给其他应用. Uri:包含一个具有一定格式的字符串的对 ...
- Linux2.6内核协议栈系列--TCP协议1.发送
在介绍tcp发送函数之前得先介绍很关键的一个结构sk_buff,在linux中,sk_buff结构代表了一个报文: 然后见发送函数源码,这里不关注硬件支持的分散-聚集: /* sendmsg系统调用在 ...
- Maven详解
一.前言 以前做过的项目中,没有真正的使用过Maven,只知道其名声很大,其作用是用来管理jar 包的.最近一段时间在项目过程中使用Maven,用Maven构建的web项目,其项目结构只停留在 ...
- AngularJS 系列 01 - HelloWorld和数据绑定
目录导读: AngularJS 系列 学习笔记 目录篇 前言: 好记性不如烂键盘,随笔就是随手笔记,希望以后有用. 本篇目录: 1. Hello World 2. AngularJS中的数据绑定 3. ...
- nginx反向代理+集群
1.前期准备: client:192.168.4.1 eth0 proxy:192.168.4.5 eth0 web1:192.168.4.100 eth0 内容2 web2:192.168.4.20 ...
- php 时间倒计时代码 个人写法 有好的想法的欢迎贴出来分享
$now=time(); $secondtime=$end_time-$now;//期限时间减去现在时间 剩余时间 $second=$secondtime % 60;//取余得到秒数 $nowtime ...