已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
游标管理 2 回顾 PL SQL是一种可移植的高性能事务处理语言PL SQL引擎驻留在Oracle服务器中PL SQL块由声明部分 可执行部分和异常处理部分组成PL SQL支持的数据类型包括标量数据类型 LOB数据类型和属性类型控制结构包括条件控制 循环控制和顺序控制PL SQL支持动态SQL运行时出现的错误叫做异常异常可以分为预定义异常和用户定义的异常 3 目标 掌握游标管理技巧 4 游标简介2 1 执行PL SQL程序 内存单元 保存到游标中 一次处理一行 检索行 提取行 5 游标简介2 2 逐行处理查询结果 以编程的方式访问数据游标的类型 隐式游标 显式游标 在PL SQL程序中执行DMLSQL语句时自动创建隐式游标 显式游标用于处理返回多行的查询 REF游标用于处理运行时才能确定的动态SQL查询的结果 游标类型 6 隐式游标4 1 在PL SQL中使用DML语句时自动创建隐式游标隐式游标自动声明 打开和关闭 其名为SQL通过检查隐式游标的属性可以获得最近执行的DML语句的信息隐式游标的属性有 FOUND SQL语句影响了一行或多行时为TRUE NOTFOUND SQL语句没有影响任何行时为TRUE ROWCOUNT SQL语句影响的行数 ISOPEN 游标是否打开 始终为FALSE 7 隐式游标4 2 SQL SETSERVEROUTPUTONSQL BEGINUPDATEtoysSETtoyprice 270WHEREtoyid P005 IFSQL FOUNDTHENDBMS OUTPUT PUT LINE 表已更新 ENDIF END 只有在DML语句影响一行或多行时 才返回True 8 隐式游标4 3 SQL SETSERVEROUTPUTONSQL DECLAREv TOYIDTOYS ID type 如果DML语句不影响任何行 则返回True 9 隐式游标4 4 SQL SETSERVEROUTPUTONSQL BEGINUPDATEvendor masterSETvenname RobMathew WHEREvencode V004 DBMS OUTPUT PUT LINE SQL ROWCOUNT END 返回DML语句影响的行数 10 SELECTINTO语句2 1 SQL SETSERVEROUTPUTONSQL DECLAREempidVARCHAR2 10 desigVARCHAR2 10 BEGINempid 如果没有与SELECTINTO语句中的条件匹配的行 将引发NO DATA FOUND异常 11 SELECTINTO语句2 2 SQL SETSERVEROUTPUTONSQL DECLAREempidVARCHAR2 10 BEGINSELECTempnoINTOempidFROMemployee EXCEPTIONWHENTOO MANY ROWSTHENDBMS OUTPUT PUT LINE 该查询提取多行 END 如果SELECTINTO语句返回多个值 将引发TOO MANY ROWS异常 12 显式游标2 1 显式游标在PL SQL块的声明部分定义查询 该查询可以返回多行显式游标的操作过程 数据库 打开游标 提取行 变量 关闭游标 13 显式游标2 2 SQL SETSERVEROUTPUTONSQL DECLAREmy toy pricetoys toyprice TYPE CURSORtoy curISSELECTtoypriceFROMtoysWHEREtoyprice 250 BEGINOPENtoy cur LOOPFETCHtoy curINTOmy toy price EXITWHENtoy cur NOTFOUND DBMS OUTPUT PUT LINE TOYPRICE 玩具单价 my toy price ENDLOOP CLOSEtoy cur END 声明游标 打开游标 提取行 关闭游标 14 带参数的显式游标 声明显式游标时可以带参数以提高灵活性声明带参数的显式游标的语法如下 CURSOR ISselect statement SQL SETSERVEROUTPUTONSQL DECLAREdesigVARCHAR2 20 emp codeVARCHAR2 5 empnmVARCHAR2 20 CURSORemp cur desigparamVARCHAR2 ISSELECTempno enameFROMemployeeWHEREdesignation desigparam BEGINdesig 15 使用显式游标更新行2 1 允许使用游标删除或更新活动集中的行声明游标时必须使用SELECT FORUPDATE语句CURSORISSELECTstatementFORUPDATE UPDATESETWHERECURRENTOF 更新的语法 DELETEFROMWHERECURRENTOF 删除的语法 16 使用显式游标更新行2 2 SQL SETSERVEROUTPUTONSQL DECLAREnew priceNUMBER CURSORcur toyISSELECTtoypriceFROMtoysWHEREtoyprice 100FORUPDATEOFtoyprice BEGINOPENcur toy LOOPFETCHcur toyINTOnew price EXITWHENcur toy NOTFOUND UPDATEtoysSETtoyprice 1 1 new priceWHERECURRENTOFcur toy ENDLOOP CLOSEcur toy COMMIT END 17 游标的使用方法 FOR2 1 FOR用于简化游标处理代码当用户需要从游标中提取记录时使用循环游标的语法如下 FORINLOOPENDLOOP 18 循环游标2 2 SQL SETSERVEROUTPUTONSQL DECLARECURSORmytoy curISSELECTtoyid toyname toypriceFROMtoys BEGINFORtoy recINmytoy curLOOPDBMS OUTPUT PUT LINE 玩具编号 toy rec toyid 玩具名称 toy rec toyname 玩具单价 toy rec toyprice ENDLOOP END 19 REF游标和游标变量3 1 REF游标和游标变量用于处理运行时动态执行的SQL查询创建游标变量需要两个步骤 声明REF游标类型声明REF游标类型的变量用于声明REF游标类型的语法为 TYPEISREFCURSOR RETURN 20 REF游标和游标变量3 2 TYPEmy curtypeISREFCURSORRETURNstud det ROWTYPE order curmy curtype 声明强类型的REF游标 打开游标变量的语法如下 OPENcursor nameFORselect statement TYPEmy ctypeISREFCURSOR stud curmy ctype 声明弱类型的REF游标 21 REF游标和游标变量3 3 SQL DECLARETYPEtoys curtypeISREFCURSORRETURNtoys ROWTYPE toys curvartoys curtype toys rectoys ROWTYPE BEGINOPENtoys curvarFORSELECT FROMtoys FETCHtoys curvarINTOtoys rec CLOSEtoys curvar END opencur prize multifor selectnvl prz lvl 0 nvl prz amt 0 decode paid dt null 0 1 prz type descrfromprizewheregame draw aandser num b usingv game draw i p ser num 声明REF游标类型 声明游标变量 22 游标变量的优点和限制 游标变量的功能强大 可以简化数据处理 游标变量的优点有 可从不同的SELECT语句中提取结果集可以作为过程的参数进行传递可以引用游标的所有属性可以进行赋值运算使用游标变量的限制 不能在程序包中声明游标变量FORUPDATE子句不能与游标变量一起使用不能使用比较运算符 23 使用游标变量执行动态SQL 可以使用游标变量执行动态构造的SQL语句打开执行动态SQL的游标变量的语如下 OPENcursor nameFORdynamic sqlstring USINGbind argument list DECLAREr empemp ROWTYPE TYPEc typeISREFCURSOR curc type p salaryNUMBER BEGINp salary 2500 OPENcurFOR select fromempwheresal 1orderbysaldesc USINGp salary DBMS OUTPUT PUT LINE 薪水大于 p salary 的员工有 LOOPFETCHcurINTOr emp EXITWHENcur NOTFOUND DBMS OUTPUT PUT LINE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《BIM 技术应用》教案 第7 章 万变不离其宗-族与体量
- 直流电机定转子检查及检测规范
- 数据中心安全防护方案
- 铁路专用线测量验收标准
- 农村生活污水治理实施方案
- 山区公路挡土墙工程设计方案
- 老年人生活质量提升策略
- 建筑垃圾处置资源化利用工艺设计
- 建筑工程施工现场消防管理方案
- 环卫清扫作业流程设计手册
- 2026年湖南有色黄沙坪矿业有限公司招聘80人笔试参考题库及答案详解
- GA/T 1999.3-2025道路交通事故车辆速度鉴定方法第3部分:基于视频图像
- 2026四川凉山州越西县县属国有企业管理人员市场化选聘(第二轮)5人模拟试卷及答案详解(真题汇编)
- 建设电工劳务分包合同
- 2026年联通考试试题及答案
- 衍生金融工具(高教)第十三章 衍生工具的运用和发展
- 大疆创新人力资源管理实践完全指南
- 2026年河南省网格员招聘考试参考试题及答案解析
- 2026年城乡规划设计院招聘试题(含答案)
- 职工技师工作站工作制度
- AI人工智能在物理教学实践中的应用
评论
0/150
提交评论