- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十二章 光标的使用 光标的概念 Oracle 光标是一种用于轻松的处理多行数据的机制。 当 PL/SQL 光标查询返回多行数据时,这些记录组被称为结果集。 Oracle 将这种活动集存储在您创建的显示定义的已命名的光标中。 没有光标, Oracle 开发人员必须单独地、显式地取回并管理光标查询选择的每一条记录。 12.1 光标的定义与使用 显式光标处理需四个 PL/SQL步骤: cursor 光标名称 is 查询语句; open 光标名称; Fetch 光标名称 into 变量列表; Close 光标名称; 12.1 光标的定义与使用 例1. declare cursor c1 is select ename, sal from emp where rownum11; v_ename varchar2(10); v_sal number(7,2); begin open c1; fetch c1 into v_ename, v_sal; while c1%found loop dbms_output.put_line(v_ename||to_char(v_sal) ); fetch c1 into v_ename, v_sal; end loop; close c1; end; 12.1 光标的定义与使用 2.光标属性 %found 布尔型属性,当最近一次读记录时成功返回,则值为true %nofound 布尔型属性,与%found相反. %isopen 布尔型属性, 当光标已打开时返回 true. %rowcount 数字型属性, 返回已从光标中读取得记录数. 12.1 光标的定义与使用 3.参数化光标 在声明光标时,将未确定的参数说明成变量,在使用光标时给出光标变量的具体值(相当于实参)使得语句可以按照给出的条件进行查询。 12.1 光标的定义与使用 例2: DECLARE Cursor c1 (view_pattern varchar2) IS Select view_name from all_views Where view_name like view_pattern’||% AND rownum = 10 Order by view_name ; Vname varchar2(40); BEGIN For I1 in c1 ( ‘DBA’) loop DBMS_OUTPUT.PUT_LINE( I1.view_name ) ; END loop; END; 12.1 光标的定义与使用 处理隐式光标 所有的SQL 语句在上下文区内部都是可执行的,因此都有一个光标指向上下文区,此光标就是所谓的SQL光标(SQL cursor),与显式光标不同,SQL 光标不被程序打开和关闭。 12.1 光标的定义与使用 例3: --节自在线代码 nomat1.sql BEGIN UPDATE rooms SET number_seats = 100 WHERE room_id = 99980; -- 如果更新没有匹配则插入一新行 IF SQL%NOTFOUND THEN INSERT INTO rooms ( room_id, number_seats ) VALUES ( 99980, 100 ) ; END IF; END; 12.1 光标的定义与使用 例4: --节自在线代码 nomat2.sql BEGIN UPDATE rooms SET number_seats = 100 WHERE room_id = 99980; -- 如果更新没有匹配则插入一新行 IF SQL%ROWCOUNT = 0 THEN INSERT INTO rooms ( room_id, number_seats ) VALUES ( 99980, 100 ) ; END IF; END; 12.1 光标的定义与使用 例5: --节自在线代码 nodata.sql DECLARE V_roomdata rooms%ROWTYPE; BEGIN Select * into v_roomdata from rooms Where room_id = -1 ; IF SQL%NOFOUND THEN INSERT INTO temp_table ( c
您可能关注的文档
- 第三篇指令系统.ppt
- 第三章数据库及数据挖掘-0.pdf
- 第十 节建设中国特色社会主义文化(2007-2008学年10模板).ppt
- 第十八章 土壤退化及土壤资源保护3.ppt
- 第十二节 SQL Server 2000的安全管理.ppt
- 第十二篇 软件防拷贝技术.ppt
- 第十二篇 资产配置管理-资产配置的主要类型.pdf
- 第十二章选择与自定义划像.doc
- 第十节 爆破安全技术.ppt
- 第十节 JavaScript 网页特效.ppt
- 2023年度酒、饮料及精制茶制造人员复习提分资料附参考答案详解(轻巧夺冠).docx
- 2023年度酒、饮料及精制茶制造人员复习提分资料附参考答案详解【达标题】.docx
- 2023年度酒、饮料及精制茶制造人员复习提分资料附参考答案详解(实用).docx
- 2023年度酒、饮料及精制茶制造人员复习提分资料附答案详解(考试直接用).docx
- 2023年度酒、饮料及精制茶制造人员复习提分资料附答案详解(基础题).docx
- 2023年度酒、饮料及精制茶制造人员复习提分资料附答案详解【典型题】.docx
- 专属保姆婴幼儿照护服务合同协议.docx
- 2023年度酒、饮料及精制茶制造人员复习提分资料附答案详解【典型题】.docx
- 2023年度酒、饮料及精制茶制造人员复习提分资料附完整答案详解【夺冠】.docx
- 2023年度酒、饮料及精制茶制造人员常考点试卷及完整答案详解(全优).docx
文档评论(0)