语句执行过程中,可能会因为异常造成损失,甚至是系统崩溃。为了避免这种情况的发生,必须对异常进行处理。PL/SQL提供了对异常进行处理的方法。该方法会使得在PL/SQL代码部分执行的过程中无论何时发生了异常错误,都会自动转向执行异常处理部分。
1、预定义异常
预定义异常是由系统产生的。比如在出现0为除数的时候,系统会产生一个预定义的ZERO_DIVIDE异常。示例如下:
declare
num1 number := 2;
num2 number := 0;
num3 number;
begin
num3 := num1/num2; --当执行这句的时候,系统捕捉到异常会自动转到异常处理部分,最后输出“不能除0”。
exception
when zero_divide then
dbms_output.put_line('不能除0');
when too_many_rows then
dbms_output.put_line('too many rows');
end;
如果在当前块中没有处理异常的代码,并且begin/end块是嵌套的,程序将继续在外部块中寻找处理异常的代码块,直到找到一个。如果最终没有处理异常的代码块存在,程序将结束。当对异常进行了处理后,程序将继续执行异常代码块之后的代码。
2、自定义异常
用户如果需要自定义异常的话,可以先定义一个exception变量,然后使用raise语句来抛出一个异常,然后在捕捉异常的时候捕捉对应的抛出异常。示例代码如下:
declare
selfDefineException exception; /*定义异常变量*/
num1 number := 2;
num2 number := 3;
num3 number;
begin
num3 := num1 + num2;
if num3=5 then
raise selfDefineException; /*抛出自定义的异常*/
end if;
exception
when selfDefineException then /*捕获自定义的异常*/
dbms_output.put_line("selfDefineException");
when zero_divide then
dbms_output.put_line("不能除0");
end;
3、使用others异常
对于那些没有直接捕捉的异常,都可以使用others异常进行捕捉,others异常可以单独使用,但当与其他异常处理一起使用的时候必须放在所有情况的最末尾。示例代码如下:
declare
num1 number := 2;
num2 number := 0;
num3 number;
begin
num3 := num1/num2; --当执行这句的时候,系统捕捉到异常会自动转到异常处理部分,最后输出“不能除0”。
exception
when others then /*这里直接捕捉others异常*/
dbms_output.put_line('不能除0');
end;
分享到:
相关推荐
《深入解析Oracle——DBA入门、进阶与诊断案例》是一本专为Oracle数据库管理员(DBA)设计的详尽指南。这本书旨在帮助初学者掌握Oracle数据库的基本操作,并引导有经验的DBA深入理解Oracle的高级特性,同时提供实用...
《「安全架构」EasyDB for Oracle——基于阿里云的Oracle最佳实践》 在当今数字化时代,数据安全成为了企业和组织的核心关切。这篇文档聚焦于“EasyDB for Oracle”这一解决方案,它充分利用了阿里云的先进技术,为...
### Oracle SOA 套件——Oracle BPEL 流程管理器 #### 执行概况与背景 在当今快速变化的市场环境下,企业面临着前所未有的挑战:市场动态变化迅速、竞争压力持续增大以及客户需求多样化。这些因素共同作用,对企业...
### Oracle经典教程1——走进Oracle #### Oracle简介 Oracle是一种基于对象的关系型数据库管理系统,它由美国甲骨文公司开发并维护。Oracle数据库系统因其高度可靠性和强大的数据处理能力而闻名,广泛应用于各种...
在Java编程中,连接Oracle数据库是一项常见的任务,用于执行SQL查询、更新和其他数据库操作。`sqlHelper`类是一个自定义的工具类,旨在简化这个过程,提供一个方便、高效的接口来处理数据库交互。本篇文章将深入探讨...
阅读提供的文档如《Oracle+PLSQL语言入门》、《Oracle数据库PL-SQL学习资料之五——异常处理》和《oracle存储过程中的异常处理》,可以进一步深入学习这些概念并提升您的Oracle数据库编程技能。
1. 故障排查:通过日志分析,定位数据库运行异常的原因,如SQL性能问题、锁等待、资源争用等。 2. 系统监控:利用Oracle企业管理器(EM)、SQL*Plus及其他工具,实时监控数据库状态,包括CPU使用率、I/O性能、内存...
在实际应用中,你可能还需要处理异常、事务管理等细节。另外,如果你使用的是Spring框架,可以利用JdbcTemplate或NamedParameterJdbcTemplate简化数据库操作。 总之,通过Java操作Oracle的ARRAY和TABLE类型,我们...
在"STRUTS——Oracle登陆"这个主题中,我们关注的是如何使用Struts框架来实现Oracle数据库的用户登录功能。Oracle数据库是世界上最广泛使用的数据库系统之一,常用于大型企业的数据存储和管理。Struts与Oracle的结合...
在本篇讨论中,我们将深入理解Oracle游标、异常处理以及如何在存储过程中使用它们。 1. **Oracle游标**: - **定义**:Oracle游标是数据库系统提供的一种机制,用于在结果集中定位并处理单条记录。它实际上是一个...
### Oracle内部培训资料——游标知识点详解 #### 一、游标概述 游标是Oracle数据库中用于处理SQL查询返回的多行记录的一种机制。它允许用户逐行地访问查询结果,这对于处理不确定数量的数据非常有用。游标分为两种...
通过这个"Oracle 11g从入门到精通——光盘源码"的压缩包,你可以实践这些知识点,将理论与实际操作相结合,从而更深入地理解Oracle数据库系统。同时,这些源码也可以帮助你在遇到问题时找到解决方案,或作为开发新...
这个“Oracle系统培训课件——资料包(7个ppt)”压缩文件包含了一系列PPT教程,旨在帮助学习者深入理解Oracle系统的各个方面。下面我们将详细探讨这些课件可能涵盖的关键知识点。 1. **Oracle概述**: - Oracle...
PL/SQL是Oracle特有的过程式语言,它扩展了SQL的功能,允许编写复杂的程序逻辑,如循环、条件判断和异常处理,常用于数据库的业务逻辑实现。 在实际操作中,登录到SQL*PLUS是使用Oracle数据库的第一步。在Windows ...
Oracle 8的基础对服务器编程主要涉及的是Oracle的PL/SQL编程语言,这是一种强大的过程化语言,用于构建与Oracle数据库交互的应用程序。以下是对PL/SQL语言基础的详细说明: 1. **PL/SQL语言结构**: - **程序块**...
### Oracle经典教程5——PLSQL程序设计:深入解读与应用 #### 一、PL/SQL:Oracle的强大武器 ##### 1.1 PL/SQL简介 PL/SQL(Procedural Language for SQL)是Oracle数据库特有的过程化编程语言,它将SQL的强大力量...
- 在数据库操作中,必须处理可能出现的异常,如OracleException,确保程序的健壮性。 - 使用try-catch-finally结构捕获异常,提供适当的错误信息给用户。 9. **数据绑定和数据验证**: - 数据控件(如...
这里提到的三本书籍——"Oracle 9i初学者指南.zip"、"Oracle专家高级编程.pdf"以及"Effective Oracle by Design.pdf"都是Oracle学习者和专业开发者的宝贵资源。 "Oracle 9i初学者指南.zip":这是一本针对Oracle 9i...
在.NET开发环境中,Oracle数据库是常见的数据存储平台之一,用于构建高效、稳定的企业级应用程序。本实例将介绍如何使用.NET连接Oracle数据库,并实现一个简单的学生、教师和课程管理系统,特别是涉及选课管理功能。...
2. **连接异常**:通过DBConsole尝试连接数据库时提示连接失败或超时。 3. **配置丢失**:之前的一些配置信息丢失,比如监听器配置等。 这些问题往往会影响到数据库的正常管理和监控,因此需要及时解决。 #### ...