网站首页 > 技术文章 正文
【本文详细介绍了Oracle数据库扩展语言PL/SQL中Exception的基本概念和使用方法,欢迎读者朋友们阅读、转发和收藏!】
1 异常处理概念
异常情况处理 (EXCEPTION) 是用来处理正常执行过程中未预料的事件,程序块的异常处理预定义的错误和自定义错误,由于 PL/SQL 程序块一旦产生异常而没有指出如何处理时 , 程序就会自动终止整个程序运行 。
有三种类型的异常错误:
1、 预定义 ( Predefined ) 错误
ORACLE 预定义的异常情况大约有 24 个。对这种异常情况的处理,无需在程序中定义,由 ORACLE 自动将其引发。
2、 非 预定义 ( Predefined ) 错误
即其他标准的 ORACLE 错误。对这种异常情况的处理,需要用户在程序中定义,然后由 ORACLE 自动将其引发。
3、 用户定义 (User_define) 错误
程序执行过程中,出现编程人员认为的非正常情况。对这种异常情况的处理,需要用户在程序中定义,然后显式地在程序中将其引发。
异常处理部分一般放在 PL/SQL 程序体的后半部 , 结构为 :
EXCEPTION
WHEN first_exception THEN <code to handle first exception >
WHEN second_exception THEN <code to handle second exception >
WHEN OTHERS THEN <code to handle others exception >
END ;
异常处理可以按任意次序排列 , 但 OTHERS 必须放在最后 。
2 异常错误传播
由于异常错误可以在声明部分和执行部分以及异常错误部分出现,因而在不同部分引发的异常错误也不一样。
2.1 在执行部分引发异常错误
当一个异常错误在执行部分引发时,有下列情况:
. 如果当前块对该异常错误设置了处理,则执行它并成功完成该块的执行,然后控制转给包含块。
. 如果没有对当前块异常错误设置定义处理器,则通过在包含块中引发它来传播异常错误。然后对该包含块执行步骤 1) 。
2.2 在声明部分引发异常错误
如果在声明部分引起异常情况,即在声明部分出现错误,那么该错误就能影响到其它的块。比如在有如下的 PL/SQL 程序:
DECLARE
Abc number(3) : =’abc’ ;
其它语句
BEGIN
其它语句
EXCEPTION
WHEN OTHERS THEN
其它语句
END ;
例子中,由于 Abc number(3)=’abc’ ;出错,尽管在 EXCEPTION 中说明了 WHEN OTHERS THEN 语句,但 WHEN OTHERS THEN 也不会被执行。但是如果在该错误语句块的外部有一个异常错误,则该错误能被抓住,如:
BEGIN
DECLARE
Abc number(3) : =’abc’ ;
其它语句
BEGIN
其它语句
EXCEPTION
WHEN OTHERS THEN
其它语句
END ;
EXCEPTION
WHEN OTHERS THEN
其它语句
END ;
3 异常错误处理编程
在一般的应用处理中,建议程序人员要用异常处理,因为如果程序中不声明任何异常处理,则在程序运行出错时,程序就被终止,并且也不提示任何信息。下面是使用系统提供的异常来编程的例子。
4 在 PL/SQL 中使用 SQLCODE , SQLERRM
由于 ORACLE 的错信息最大长度是 512 字节,为了得到完整的错误提示信息,我们可用 SQLERRM 和 SUBSTR 函数一起得到错误提示信息。
SQLCODE 返回错误代码数字 。
SQLERRM 返回错误信息 。
猜你喜欢
- 2024-11-04 Oracle推出云生成式AI服务 帮助企业部署和微调语言模型
- 2024-11-04 Delphi Digital报告:Oracle在释放智能合约全部潜力上发挥关键作用
- 2024-11-04 Oracle数据库扩展语言PL/SQL之字符串运算符
- 2024-11-04 一、Java编程语言简介 java编程语言入门教程
- 2024-11-04 Oracle数据库扩展语言PL/SQL之记录
- 2024-11-04 什么是Java语言 什么是JAVA语言中定义类时必须使用的关键字
- 2024-11-04 oracle数据类型及SQL语言 oracle数据库常用sql
- 2024-11-04 Oracle学习之——SQL语言 oracle中的sql语句
你 发表评论:
欢迎- 620℃几个Oracle空值处理函数 oracle处理null值的函数
- 612℃Oracle分析函数之Lag和Lead()使用
- 601℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 597℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 593℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 585℃【数据统计分析】详解Oracle分组函数之CUBE
- 574℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 563℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)