识字粗堪供赋役,不须辛苦慕公卿。这篇文章主要讲述PL/SQL系统定义的异常操作实例讲解相关的知识,希望能为你提供帮助。
程序执行过程中出现错误情况被称为在PL/SQL异常。 PL/SQL支持程序员在程序中使用异常块捕获这样的条件并采取适当的动作应对错误情况。有两种类型的异常:系统定义的异常、用户定义的异常
异常处理语法
一般异常处理的语法如下。在这里可以列出下来很多,要处理异常。默认的异常将使用WHEN others THEN处理:
DECLARE
< declarations section>
BEGIN
< executable command(s)>
EXCEPTION
< exception handling goes here >
WHEN exception1 THEN
exception1-handling-statements
WHEN exception2THEN
exception2-handling-statements
WHEN exception3 THEN
exception3-handling-statements
........
WHEN others THEN
exception3-handling-statements
END;
预定义异常
PL/SQL提供许多预先定义的异常,这是在被执行时的任何数据库规则由程序引发。例如,预定义异常NO_DATA_FOUND时引发一个SELECT INTO语句返回数据行。下表列出了一些重要的预先定义的异常:
操作实例一 除以零的操作源码异常:
-- Created on 2018/4/2 by E.WANG
/*
默认的异常将使用WHEN others THEN处理:
DECLARE
< declarations section>
BEGIN
< executable command(s)>
EXCEPTION
< exception handling goes here >
WHEN exception1 THEN
exception1-handling-statements
WHEN exception2THEN
exception2-handling-statements
WHEN exception3 THEN
exception3-handling-statements
........
WHEN others THEN
exception3-handling-statements
END;
*/
declare
--定义一个简单的变量
i integer;
begin
--
i:=30;
--当没有任何选择,在当选择一个CASE语句的子句,并且没有ELSE子句时被引发
case
when i=35 then dbms_output.put_line(It is right!);
--它被引发当一个数试图除以零。
when i/0=0 then dbms_output.put_line(Condition is error);
end case;
--异常获取代码块
exception
when CASE_NOT_FOUND then
dbms_output.put_line(No Case SubState!);
--它被引发当一个数试图除以零
when ZERO_DIVIDE then
dbms_output.put_line(Zero is not divided!);
end;
操作实例一运行结果截图:
【PL/SQL系统定义的异常操作实例讲解】
操作实例二 引发异常:
-- Created on 2018/4/2 by E.WANG
/*
异常是数据库服务器自动在内部数据库错误,但异常可以明确地提出由程序员使用命令RAISE。
以下是引发异常的简单的语法:
DECLARE
exception_name EXCEPTION;
BEGIN
IF condition THEN
RAISE exception_name;
END IF;
EXCEPTION
WHEN exception_name THEN
statement;
END;
可以在引发Oracle的标准异常或任何用户定义的异常使用上述语法。
*/
declare
--定义一个简单的变量
i integer;
begin
--
i:=30;
--它被引发当一个数试图除以零。
if i/0=0 then
raise ZERO_DIVIDE;
end if;
--异常获取代码块
exception
--它被引发当一个数试图除以零
when ZERO_DIVIDE then
dbms_output.put_line(Zero is not divided!);
end;
窗口二结果截图:
推荐阅读
- PL/SQL 用户自定义异常操作实例
- PL/SQL包(package)操作实例讲解
- PL/SQL字符串声明字符串函数和操作符实例源码说明
- 测试点先发散后收敛思考
- Jmeter操作oracle简单示例
- Dockerpyresttest的dockerfile调整,增加时区
- u-boot启动流程详解-基于iTop4412开发板
- ORACLE 12的ORA-01033问题操作过程
- Keras 的深度学习模型中的 Dropout 正则化