PLSQL游标讲解.doc

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

游标的概念 为了处理 SQL 语句,ORACLE 必须分配一片叫上下文( context area )的区域来处理所必需的信息,其中包括要处理的行的数目,一个指向语句被分析以后的表示形式的指针以及查询的活动集(active set)。 游标是一个指向上下文的句柄( handle)或指针。通过游标,PL/SQL可以控制上下文区和处理语句时上下文区会发生些什么事情。 游标的概念 对于不同的SQL语句,游标的使用情况不同: SQL语句 游标 非查询语句 隐式的 结果是单行的查询语句 隐式的或显式的 结果是多行的查询语句 显式的 显式游标 处理显式游标需要四个 PL/SQL步骤 定义游标:就是定义一个游标名,以及与其相对应的SELECT 语句 , 其 一般形式为: CURSOR cursor_name IS select_statement; 其中: 游标声明部分是唯一可以出现在模块声明部分的步骤,其他三个步骤都在执行和异常处理部分中 游标名是表识符,所以也有作用域,并且必须在使用前进行说明 任何SELECT语句都是合法的,但是SELECT …INTO语句是非法的 在声明部分的末尾声明游标 打开游标:就是执行游标所对应的SELECT 语句,将其查询结果放入工作区,并且指针指向工作区的首部,标识游标结果集合。 OPEN cursor_name 其中: PL/SQL 程序不能用OPEN 语句重复打开一个游标 提取游标:就是检索结果集合中的数据行,放入指定的输出变量中。 FETCH cursor_name INTO {variable_list | record_variable }; 关闭游标:当提取和处理完游标结果集合数据后,应及时关闭游标,以释放该游标所占用的系统资源,并使该游标的工作区变成无效,不能再使用FETCH 语句取其中数据。关闭后的游标可以使用OPEN 语句重新打开。 CLOSE cursor_name; DECLARE v_ename emp.ename%TYPE; v_sal emp.sal%TYPE; CURSOR c_cursor IS SELECT ename, sal FROM emp WHERE rownum11; BEGIN OPEN c_cursor; FETCH c_cursor INTO v_ename, v_sal; WHILE c_cursor %FOUND LOOP DBMS_OUTPUT.PUT_LINE(v_ename||’---‘||to_char(v_sal) ); FETCH c_cursor INTO v_ename, v_sal; END LOOP; CLOSE c_cursor; END; DECLARE v_ename emp.ename%TYPE; v_sal emp.sal%TYPE; CURSOR c_cursor(P_sal emp.sal%type) IS SELECT ename, sal FROM emp WHERE sal = P_sal; BEGIN OPEN c_cursor(1000); FETCH c_cursor INTO v_ename, v_sal; WHILE c_cursor %FOUND LOOP DBMS_OUTPUT.PUT_LINE(v_ename||’---‘||to_char(v_sal) ); FETCH c_cursor INTO v_ename, v_sal; END LOOP; CLOSE c_cursor; END; 游标属性 属性 描述 %FOUND 布尔型属性,当最近一次读记录时成功返回,则值为TRUE; %NOTFOUND 布尔型属性,与%FOUND相反 %ISOPEN 布尔型属性,当游标已打开时返回 TRUE; %ROWCOUNT 数字型属性,返回已从游标中读取的记录数。 处理隐式游标 显式游标主要是用于对查询语句的处理,尤其是在查询结果为多条记录的情况下;而对于非查询语句,如修改、删除操作,则由ORACLE 系统自动地为这些操作设置游标并创建其工作区,这些由系统隐含创建的游标称为隐式游标,隐式游标的名字为SQL,这是由ORACLE 系统定义的。对于隐式游标的操作,如定义、打开、取值及关闭操作,都由ORACLE 系统自动地完成,无需用户进行处理。用户只能通过隐式游标的相关属性,来完成相应的操作。在隐式游标的工作区中,所存放的数据是与用户自定义的显示游标无关的、最新处理的一条SQL 语句所包含的数据。INSE

文档评论(0)

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

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

1亿VIP精品文档

相关文档