cursor --------需要用户先定义,在select时,可以用于处理多行记录

1、declare  声明一个游标

2、open cursor (隐式游标自动open)

3、fetch cursor 读取记录到变量(在select时,可以通过循环的方式读取多行记录)

4、判断游标是否为空(到达最后一行记录)

5、close cusor 关闭游标

%isopen  判断游标是否open %found    判断游标是否为非空 %notfound  判断游标是否为空 %rowcount   在游标中处理的数据行数

①案例:通过显式游标select读取多行数据

SQL> declare
2 cursor cur_emp is
3 select * from emp where deptno=&no;
4
5 emp_rec emp%rowtype;
6
7 begin
8 if not cur_emp%isopen then
9 open cur_emp;
10 end if;
11
12 loop
13 fetch cur_emp into emp_rec ;
14 exit when cur_emp%notfound ;
15
16 dbms_output.put_line( emp_rec.ename ||' , '||emp_rec.sal||' , '|| emp_rec.deptno );
17 end loop;
18 close cur_emp;
19
20 end;

②通过for循环读取游标数据:

SQL> declare
2 cursor cur_emp is
3 select * from emp where deptno=&no;
4
5 begin
6 for emp_rec in cur_emp loop
7 dbms_output.put_line( emp_rec.ename ||' , '||emp_rec.sal||' , '|| emp_rec.deptno );
8 end loop;
9
10 end;

③带有参数的游标:通过参数传递给游标

SQL> declare
2
3 cursor emp_cur (v_deptno number) is
4 select * from emp where deptno=v_deptno;
5 emp_rec emp%rowtype;
6
7 begin
8 if not emp_cur%isopen then
9 open emp_cur(30);
10 end if;
11 loop
12 fetch emp_cur into emp_rec ;
13 exit when emp_cur%notfound;
14 dbms_output.put_line( emp_rec.ename ||' , '||emp_rec.sal||' , '|| emp_rec.deptno );
15 end loop;
16 end;
SQL>  declare
2
3 cursor emp_cur (v_deptno number) is
4 select * from emp where deptno=v_deptno;
5 emp_rec emp%rowtype;
6
7 begin
8 if not emp_cur%isopen then
9 open emp_cur(20);
10 end if;
11 loop
12 fetch emp_cur into emp_rec ;
13 exit when emp_cur%notfound;
14 dbms_output.put_line( emp_rec.ename ||' , '||emp_rec.sal||' , '|| emp_rec.deptno );
15 end loop;
16 end;

④在for循环中嵌套游标(游标不需要declare)

SQL> begin
2 for emp_rec in (select * from emp where deptno=&no) loop
3 dbms_output.put_line( emp_rec.ename ||' , '||emp_rec.sal||' , '|| emp_rec.deptno );
4 end loop;
5
6 end;

最新文章

  1. jQuery Ajax 实例 ($.ajax、$.post、$.get)
  2. ASP.NET保存信息总结(Application、Session、Cookie、ViewState和Cache等) ZT
  3. Silverlight5中横向显示ListBox
  4. C#把datetime类型的日期转化成年月日或其他格式方法总结
  5. Django环境配置
  6. Android开发之单例模式
  7. Jordan Lecture Note-11: 典型相关分析(Canonical Correlation Analysis, CCA).
  8. 文件MD5
  9. js:进一步关闭(范围:下一个)
  10. 在线协作沟通工具DesignBoard帮助设计团队更有效地进行沟通与版本管理
  11. Sublime Text编辑器 + vim插件
  12. Windows Server 2016-FSMO操作主机角色介绍
  13. 再谈DOMContentLoaded与渲染阻塞—分析html页面事件与资源加载
  14. 【javascript】谈谈HTML5: Web-Worker、canvas、indexedDB、拖拽事件
  15. SQL Server 怎么在分页获取数据的同时获取到总记录数
  16. 产品经理说|AIOps 让告警管理变得更智能
  17. 转:图解C#的值类型,引用类型,栈,堆,ref,out
  18. 做游戏的小伙伴们注意了,DDoS还可以这样破!
  19. C#中的Attribute详解(下)
  20. ecmascript 6 的arguments转数组的代码

热门文章

  1. Maven的几个核心概念
  2. Func系列4:其他功能
  3. 关于snprintf的一个warning
  4. Sublime Text 介绍、用法、插件等
  5. php获取从百度搜索进入网站的关键词
  6. autotool相关:AC_ARG_ENABLE的用法
  7. Redis配置文件解读
  8. shell下root用户切换其他用户运行程序
  9. [实变函数]2.1 度量空间 (metric space), $n$ 维 Euclidean 空间
  10. ylbtech-Recode(记录)-数据库设计