游标提供了一种从集合性质的结果集中提供出单条记录的手段。初始时指向首记录。

  • 游标的种类
    静态游标、REF游标

    静态游标:能够理解为一个数据快照,打开游标后的结果集是数据库表中数据的备份,数据不会对表的DML操作而改变。

    ①显式静态游标:是指在使用之前必须有明白的游标定义,这样的游标的定义会关联数据查询语句。一般会返回一行或多行,打开游标后能够利用游标的位置对结果集进行检索,使之返回单一的行记录,用户能够操作该记录,关闭游标后就不能对结果集进行操作。

    ②隐式静态游标:和显式游标不同,它被PL/SQL自己主动管理,也被称为SQL游标。

  • 显示游标的使用
    语法

cursor cursor_name[(parameter_name datatype,...)]
is select_statement;
使用步骤:声明、打开、读取数据、关闭①声明游标
declare cursor cursor_name is select_statement;
②打开游标(游标一旦被打开,结果就是静态的了)
open cursor_name;
③读取数据
读取数据要用到fetch,它能够吧游标指向位置的记录读取到pl/sql声明的变量中。
fetch cursor_name into record_name
④关闭游标
close cursor_name;

游标中简单的loop语句
eg:

declarecursor test_cursor is select * from test1;test_id  test1.id%type;test_name test1.name%type;test_money test1.money%type;beginopen test_cursor;loopfetch test_cursor into test_id,test_name,test_money;exit when test_cursor%notfound;dbms_output.put_line('.....');end loop;close test_cursor;
end;

须要注意的是:使用fetch…into..提取数据的时候的单条提取,数据量较大时效率比較低。

使用fetch…bulk collect into 提取大数据量的游标数据
eg:

declarecursor emp_cursor is select * from emp;type emp_tab is table of emp%rowtype;emp_rd emp_tab;
beginopen emp_cursor;loopfetch emp_cursor bulk collect into emp_rd limit 2;for i in 1...emp_rd.countloopdbms_output.put_line(......);end loop;exit when emp_cursor%notfound;end loop;close emp_cursor;
end;

利用cursor … for … loop 便利游标数据。使用简洁、方便
eg:

declarecursor test_cursor isselect * from test1;
beginfor rec in test_cursorloopdbsm_output.put_line(.....);end loop;
end;

带參数的游标
eg:

declaretest_id1 test.id%type := 1;test_id2 test.id%type := 2;cd_test test1%rowtype;cursor test_cursor(id1 number,id2 number)is select * from test1 where id in(id1,id2);
beginopen test_cursor(test_id1,test_id2);loopfetch test_cursor into cd_test;exit when test_cursor%notfound;dbsm_output.put_line(...);end loop;close test_cursor;
end;
  • 隐式游标
    隐式游标和显式游标有所差异,它显没有显式游标的课操作性,每当执行DQL或DML语句时,PL/SQL会打开一个隐式游标,隐式游标不受用户控制。

    ①隐式游标由pl/sql自己主动管理
    ②隐式游标的默认名称是SQL
    ③DQL和DML语句产出隐式游标
    ④隐式游标的属性值是指是最新执行的sql语句的。

SQL-Oracle游标相关推荐

  1. oracle pl/sql 游标,Oracle PL/SQL 关于游标的介绍

    游标是指向私有 SQL 区(private SQL area)的指针,私有 SQL 区中存储着关于 SELECT 或 DML 语句的处理信息. (1) 隐式游标 隐式游标是指被后台 PL/SQL 创建 ...

  2. Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器

    ---视图 ---视图的概念:视图就是提供一个查询的窗口,来操作数据库中的数据,不存储数据,数据在表中. ---一个由查询语句定义的虚拟表.---查询语句创建表 create table emp as ...

  3. oracle游标声明中使用变量赋值,Oracle游标使用方法(游标里使用变量绑定)

    来源:http://www.jzxue.com/shujuku/oracle/200910/01-2839.html 游标(CURSOR)也叫光标,在关系数据库中经常使用,在PL/SQL程序中可以用C ...

  4. oracle 游标中抛出异常的处理方式

    在oracle游标的使用中,用for循环是一种较直接open 游标然后关闭游标更好的应用方式.现在写两个存储过程,验证这两种情况下游标中抛出异常后游标是否正常关闭. 现在有一张表emp,表结构如下: ...

  5. oracle 游标示例

    oracle 游标示例 declare iCount int:=0; sPath nvarchar2(200); tdzsh nvarchar2(50); begin for x in (select ...

  6. Oracle 游标(cursor) 说明

    一.  Cursor说明 Oracle里的cursor分为两种:一种是shared cursor,一种是session cursor. 1.1 Shared cursor 说明 sharedcurso ...

  7. [转载]Oracle 游标使用全解

    这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 -- 声明游标:CURSOR cursor_name IS select_statement --For 循环游标--(1)定义游标- ...

  8. Oracle 游标使用全解

    Oracle 游标使用全解 这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 -- 声明游标:CURSOR cursor_name IS select_statement --For ...

  9. oracle表 游标,Oracle游标表达式和表函数

    Oracle游标表达式是Oracle数据库中的重要概念,下面就为您详细介绍Oracle游标表达式和表函数方面的知识,供您参考学习之用. Oracle游标表达式(有时称为游标子队列)是 SQL 语言的一 ...

  10. oracle游标的说法,oracle游标练习题.doc

    oracle游标练习题 oracle游标练习题 当查询返回结果超过一行时,就需要一个显式游标,此时用户不能使用select into语句.PL/SQL管理隐式游标,当查询开始时隐式游标打开,查询结束时 ...

最新文章

  1. Android Studio 3.5 之后导入第三方Library 库的方法
  2. 山海树“医+药”O2O闭环 掘金8万亿市场
  3. 美国科技三巨头的财报为何集体爆表?原因在这里
  4. 大数据如何预测上市公司的业绩?
  5. c语言省2全民,C语言省试题(2-数据类型)101016.ppt
  6. PHP内核探索之变量(1)Zval(自己看过不错儿)
  7. 问题 E: 小鱼的数学问题(递推)
  8. 前端学习(3179):ant-design介绍2
  9. ansys里面自带chemkin_ANSYS CFD原来还有这么多功能,初学者都进来了解
  10. 手把手教你用Python读取Excel
  11. Matlab代码提示“svmtrain已删除 请改用fitcsvm”,以及svmpredict没有返回结果label和精度accuracy的解决办法
  12. H3C认证无线高级工程师
  13. Java高并发编程详解系列-Java线程入门
  14. 北师大高级程序c语言,北师大《高级程序设计C语言》.doc
  15. 《CCNA安全640-554认证考试指南》——第6章在Cisco IOS设备上保护管理层
  16. 基于java的飞机大战雷电游戏的开发与设计#毕业设计
  17. tail关键字查询日志
  18. 微信H5支付浏览器支付
  19. 三维立体地图开发项目书
  20. 微信分销商城如何推广比较吸引粉丝

热门文章

  1. asp.net添加电子地图
  2. Android --- 图片的特效处理
  3. 全排列递归实现的讨论
  4. WIN server 2003 下无法安装adobe cs3 终极解决方法。
  5. 结构体是否有默认的构造函数?(没有,如果需要,需要自己写)
  6. bupt summer training for 16 #2 ——计算几何
  7. eclipse 如何使用svn
  8. 最直接的解决服务器宕机的方法
  9. 利用 C++ Interop 封装 ISO C++ 对象, 供其他 .Net 语言使用
  10. 位运算与组合搜索(二)