网站大量收购闲置独家精品文档,联系QQ:2885784924
  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
九游标

游标 概述 游标(Cursor)是Oracle系统在内存中开辟的一块工作区,在该工作区中存放查询语句返回的结果集。 结果集可以包含零条数据记录、一条数据记录,也可以是多条数据记录。在定义游标所在的工作区中,存在一个指针,在初始状态下,游标指针指向查询结果集的第一条数据记录的位置。当执行FETCH语句提取数据记录后,游标指针将向下移动一个数据记录的位置 游标的作用 从结果集的当前位置检索一行数据记录; 支持对结果集的当前数据记录进行数据更新 使用游标注意事项 ①在创建游标时,因为游标的效率较差,如果游标操作的数据超过1万行,那么就应该避免使用游标; ②如果使用了游标,就要尽量避免在游标循环中再进行表连接的操作 游标分类 Oracle中的游标分为显示游标,隐式游标,REF游标。 当查询返回的结果集超过一条数据记录时,就需要一个显式游标,此时用户不能使用SELECT INTO语句。显式游标在PL/SQL块的声明部分声明,在执行部分或异常处理部分打开、提取和关闭 PL/SQL管理隐式游标,当执行DML操作时隐式游标打开,结束时隐式游标自动关闭。 REF 游标用于处理运行时才能确定的动态 SQL 查询的结果 游标使用过程和属性 建立游标的过程 1.声明游标 声明游标,就是使一个游标与一条查询语句建立联系。 DECLARE CURSOR 游标名[(参数1 数据类型[,…n])] IS 查询语句 [FOR UPDATE [OF [用户方案.]表名.列名 [,…n]]]; 2.打开游标 就是执行游标定义时所对应的查询语句,并把查询返回的结果集存储在游标对应的工作区中。 OPEN 游标名[(参数1 [,…n])]; 3.提取游标数据 就是从定义游标的工作区中检索一条数据记录作为当前数据记录。 FETCH 游标名 INTO 变量1 [,… n] 4.关闭游标 CLOSE 游标名; 游标的重要属性 %FOUND – SQL 语句影响了一行或多行时为 TRUE %NOTFOUND – SQL 语句没有影响任何行时为TRUE %ROWCOUNT – SQL 语句影响的行数 %ISOPEN - 游标是否打开,始终为FALSE 游标详解 隐式游标 在PL/SQL中使用DML语句时自动创建隐式游标,隐式游标自动声明、打开和关闭,其名为 SQL。通过检查隐式游标的属性可以获得最近执行的DML 语句的信息 --%found --查询emp表中有没有编号为7788的记录 declare emp_row emp%rowtype; begin select * into emp_row from emp where empno=7788; if(sql%found) then --注意:sql是隐身游标默认游标名 dbms_output.put_line(找到数据); else dbms_output.put_line(没有找到数据); end if; end; --%notfound declare emp_row emp%rowtype; begin select * into emp_row from emp where empno=7788; if(sql%notfound) then dbms_output.put_line(没有找到数据); else dbms_output.put_line(找到数据); end if; end; --%rowcount --%isopen --将部门编号为30的员工都加薪100 begin update emp set sal=sal+100 where deptno=30; dbms_output.put_line(受影响的行数:||sql%rowcount); if(sql%isopen) then dbms_output.put_line(游标已经打开); else dbms_output.put_line(游标没有打开);--隐式游标都是关闭的 end if; end; 显示游标 虽然在DML操作中,PL/SQL块中会创建隐式游标,但是如果在进行查询操作并赋值给标量类型的变量时,如果返回行超过1行,此时就需要应用显示游标 显示游标需要先定义游标,再经历打开,提取,关闭整个过程。 显示游标查询案例: --显示游标 --迭代游标 loop --查询出部门编号为30的员工信息 Declare --声明游标时与查询语句关联 cursor emp_cursor is select * from emp where deptno=30; emp_row emp%rowty

文档评论(0)

junzilan11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档