- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
所有的SQL 语句在上下文区内部都是可执行的,因此都有一个游标指向上下文区,此游标就是所谓的SQL游标(SQL cursor),即隐式游标。与显式游标不同,SQL 游标不被程序打开和关闭。 当一个DML语句执行时,PL/SQL内部打开一个游标,语句的结果被保存在4个游标属性中。 SQL%FOUND:布尔型,如果最近一次使用FETCH语句,有返回结果则为TRUE,否则为FALSE SQL%NOTFOUND:布尔型,如果最近一次使用FETCH语句,没有返回结果则为TRUE,否则为FALSE SQL%ROWCOUNT:数值型,返回到目前为止从游标缓冲区检索的元组数 隐式游标的使用 案例18:编写第一个游标,输出emp表中所有员工的信息。 案例19:练习(请各位先编写程序):一次性上涨全部雇员的工资(游标实现) 根据它所在的部门涨工资,规则: 10部门上涨10% 20部门上涨20% 30部门上涨30% 所有部门员工上涨后的工资最多不能超过5000,如果超过5000,则工资就为5000。 SQL%ISOPEN:如果游标已经打开,返回TRUE,否则为FALSE 游标是一块包含有查询信息的内存空间。在执行DML语句,游标被打开;当语句完成时,游标被关闭。 【案例20】 更新dept表,将部门号为80的部门名称修改为 总经办公室,如果没有这条记录,则向dept表写入该条记录 异常处理 在程序运行的时候出现的错误就称为异常,发生异常后,语句将停止执行,PL/SQL引擎立即将控制权转到PL/SQL块的异常处理部分,异常处理机制简化了代码的错误检测,PL/SQL中任何异常出现时,每个异常都应该对应一个异常码和异常信息,比如: declare v_sal emp.sal%type; begin select sal into v_sal from emp; end; ORA-01422: 实际返回的行数超出请求的行数 异常处理 一个优秀的程序都应该能够正确处理各种出错情况,并尽可能从错误中恢复。Oracle 提供异常情况(EXCEPTION)和异常处理(EXCEPTION HANDLER)来实现错误处理。 虽然在PL/SQL编程中,异常处理不是必须的,但建议编程人员要养成在PL/SQL编程中指定相应的异常。 异常处理是用来处理正常执行过程中未预料的事件,异 常处理包括预定义的错误和自定义错误。PL/SQL程序 块一旦产生异常而没有指出如何处理时,程序就会自动 终止整个程序运行 EXCEPTION when exception1 then statement1; when exception2 then statement2; …….. when others then statement; END; 其中:异常处理可以按任意次序排列,但 Others 必须放在最后。 异常处理概念 两种类型的异常:用户定义(user_define) 异常和预定义 ( predefined )异常。 为了方便oracle开发和维护,在oracle异常中,为常见的异常码定义了对应的异常名称,称为预定义异常; 当使用预定义异常处理时,应该了解PL/SQL 块的常见运行错误,并掌握与之相关的预定义异常处理,下表列出常用的系统异常 预定义的异常处理 案例21: too_many_rows系统异常使用举例 自定义异常: 除了预定义异常外,用户还可以自定义异常,自定义异常可 以让用户采用与PL/SQL引擎处理错误相同的方式进行处理,用户 自定义异常的两个关键点: 异常定义:在PL/SQL块的声明部分采用exception关键字来声 明异常,定义方法与定义变量相同,比如声明一个myexception 的异常方法是: myexception exception; 异常引发:在程序可执行区域,使用raise关键字来进行引发, 比如引发myexception的方法是: raise myexception; 请看案例22:自定义异常使用举例 引发应用程序异常: 在oracle开发中,遇到的系统异常都有对应的异常码,在应用系 统开发中,用户自定义的异常也可以指定一个异常码和异常信息, oracle系统为用户预留了自定义的异常码,其范围是-20000到- 20999之间的负整数,其语法是: raise_application_error(异常码,异常信息) 案例23:异常引发举例 表空间、数据库对象 同义词概念 序列的应用 视图的概念 索引的概念 表空间的概念 Oracle数据库对象
文档评论(0)