- 1、本文档共4页,可阅读全部内容。
- 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游标变量和隐藏游标
游标变量和隐藏游标
SQL%FOUND 指明insert ,update或delete是否影响到行SQL%ISOPEN 指明游标是否打开,这个值在隐式游标中永远为false,因为隐式游标在DML语句执行后自动关闭SQL%NOTFOUND? 表示DML语句在修改行的是候是否失败了SQL%ROWCOUNT 指明DML语句影响到的行数
游标变量就是一个PL/SQL变量,你可以在运行时针对不同的查询使用该变量同一游标变量能指行不同的工作区
游标变量的定义包括两个步骤:1 定义CURSOR类型的指针? 在pl/SQL中,使用下面语法定义CURSOR类型的指针? ref type? 如? TYPE rc IS REF CURSOR2 定义REF CURSOR 类型的变量? v_rc rc ? 完整的声明游标变量方法如下:? type rc is ref cursor;? v_rc rc;
这样定义的游标类型叫弱类ref curosr 类型 ,这是因为没指明游标的返回类型,因此它能指向任何一个具有任意多列的select 查询。定义带有返回类型的强ref cursor 类型type ref_type_name is ref cursor return return_type;如type rc is ref cursor return hrc_tab%rowtype;v_rc rc;游标变量的使用?1) 分配内存?2) 为查询打开游标变量?3) 把结果取到pl/sql记录中?4) 关闭游标变量
1 分配内存?? 在pl/sql中声明游标变量后,pl/sql引擎会自动为期分配存储数据行的内存空间2 打开游标? open?? 游标变量名 fro select_query3 把结果取到pl/sql记录或单独pl/sql变量中? fetch cursor_variable_name into var1,var2或?fetch?? cursor_variable_name into table_name%rowtype;
4 关闭游标变量? close? cursor_variable_name
一个例子declare ?type rc is ref cursor ;?v_rc rc;?v_rc2 rc;?hrc_rec hrc_tab%rowtype;begin? open v_rc for select * form hrc_tab;? v_rc2:=vrc;loop? fetch v_rc into hrc_rec;? exit when v_rc%nofound;? dbms_output.put_line();end loop;?close v_rc;? end;注意:当关闭v_rc的同时也会关闭v_rc2,反之亦然。为一个游标变量简单的赋上一个已经打开的游标变量值,实际上是一个游标指向另一个工作区。不要把一个没打开的游标变量赋值给另一个游标变量,那样会出现invalid_cursor错误游标变量也有4个属性curosr_variable_name%ISOPEN,curosr_variable_name%FOUND,curosr_variable_name%NOTFOUND,curosr_variable_name%ROWCOUNT使用的办法和普通游标一样。
游标的高级功能
使用游标变量真正的好处是必须使用同一个游标变量打开多个查询,或根据运行时的条件需要动态的把不同的查询赋给相同的游标变量时体现。
使用同一游标变理打开多个查询
?declare ?type rc is ref cursor ;?v_rc rc;?v_rc2 rc;?hrc_rec hrc_tab%rowtype;begin? open v_rc for select * form hrc_tab;? v_rc2:=vrc;loop? fetch v_rc into hrc_rec;? exit when v_rc%nofound;? dbms_output.put_line();end loop;??open v_rc for select * from hrc_tab where class_id=55;loop? fetch v_rc into hrc_rec;? exit when v_rc%nofound;? dbms_output.put_line();end loop;?close v_rc;? end;
两个地方值得注意:?同一游标变量v_rc指向两个不同的查询?第一个查询打开v_rc并取得值后,v_rc并没有立即关
您可能关注的文档
最近下载
- 佳能5D4中文使用说明书.pptx VIP
- T_SXNA 002-2021_陕西省消毒供应中心达标验收标准.pdf
- 2025年武汉江岸区公开招聘社区干事24人笔试备考题库及答案解析.docx VIP
- 20250616-高盛-亚洲经济分析:中国的新增住房需求将保持低迷.docx VIP
- 濒危野生植物及其制品物种鉴定规范.pdf VIP
- 默纳克ME320L电梯专用变频器说明书.pdf
- 20S517- 排水管道出水口.pdf VIP
- 某集团有限公司绩效考核详细手册.docx VIP
- 东北林业大学《高等数学Ⅱ》2025-----2026学年期末试卷(A卷).docx
- 茶楼股东合作协议8篇.docx VIP
文档评论(0)