Oracle实验(Exception).pdf

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

《Oracle 数据库》 实验教学指导书 实验三 异常处理 撰写人:郭云飞 湘潭大学 信息工程学院 二○一四年三月十五日 实验三 异常处理 一.上机目的 1. 了解PL/SQL 在Oracle 中的基本概念。 2 . 掌握PL/SQL 的各组成部分。 3 . PL/SQL 的运用。 二.预备知识 异常(exception )是PL/SQL 处理错误情况的方法。在PL/SQL 代码部分执行的过程中无论何时发生错 误,控制自动地执行异常部分。表 4-1 列出了常见的 PL/SQL 异常,通过检测这些异常,用户可以查找到 PL/SQL 程序产生的错误。 表4-1 PL/SQL 常见异常 异常 说明 No_data_found 如果一个 select 语句试图基于其条件检索数据,此异常表示不存在满 足条件的数据行 Too_many_rows 由于隐式光标每次只能检索一行数据,使用隐式光标时,这个异常检 测到有多行数据存在(有关隐式光标参见本章“隐式光标”一节) Dup_val_on_index 如果某索引中已有某键列值,若还要在该索引中创建该键字值的索引 项时,出现此异常。例如:假设一个计费系统以发票号为键字,当某 个应用程序准备创建一个重复的发票号时,产生此异常 Value_error 此异常表示指定目标域的长度小于待放入其中的数据的长度。例如: 将“ABCDEFGH”字符串放入定义为“varchar2(6)”的域时,产生此异常 当遇到预先定义的错误时,错误被当前块的异常部分相应的 when…then 语句捕捉。跟在 when 句子 的then 语句的代码被执行。Then 语句执行后,控制运行到了紧跟着当前块的end 语句的行。如果你的错 误陷阱代码只是退出内部嵌套的块,程序将继续跟在内部块 end 语句后的外部块的第一行。应用他们自 己异常部分的嵌套块是一种控制程序流的方法。 如果在当前块中没有联系错误的when 句子并且 begin/end 块是嵌套的,程序将继续在外部块中寻找 错误处理入口直到找到一个。当错误发生而在任何异常部分没有与之联系的错误处理入口,程序将终止。 Oracle 给我们提供了“抓住一切”的错误处理入口来捕捉不是预定义的错误。When others then 错误处理入 口将捕捉所有Oracle 预定义错误范围之外的错误。通过Oracle 的sqlcode 和sqlerrm 函数在when others then 错误处理入口中显示错误代码和错误信息是一个好的主意。 如果你在异常部分有其他的错误处理入口,确定when others 是最后一个。如果你错误地先写when others 语句,它将捕捉所有的错误,即使是那些预定义的错误。 三.上机内容 例1.编写如下PL/SQL 块并运行。 发现是第4 行“ x:= a123; ”有问题,字符到数值的(自动、隐式)转换错误。 增加异常处理部分并运行。 例2 .查询某人所在的部门。PL/SQL 块如下: 运行脚本,结果如下: 错误报告: ORA-06502: PL/SQL: 数字或值错误: 字符串缓冲区太小 ORA-06512: 在line 5 发现是第5 行有问题,字符串缓冲区太小。为什么? 如果将第5 行中的“Elizabeth ”删除,再运行,则上述错误消失,但出现了另外一个错误。 错误报告: ORA-01403: 未找到任何数据 ORA-06512: 在line 6 通过检查emp 表发现,ename 列都是大写字母,则将第5 行改为: vename:=upper(Smith); 再次运行,得到结果: Dept:RESEARCH

文档评论(0)

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

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

1亿VIP精品文档

相关文档