Oracle PL/SQL开发基础(第二十九弹:异常处理简介)
来源:互联网 发布:ps3验证游戏数据 编辑:程序博客网 时间:2024/06/16 01:22
异常处理简介
Oracle中的错误可以分为如下两大类:
- 编译时错误:程序在编写过程中出现的错误。PL/SQL引擎在进行编译时会发现这些错误并报告给用户,此时程序还没有完全运行。
- 运行时错误:程序在运行过程中因为各种各样的原因产生的运行时错误。由于这类错误优势难以预料,因此需要异常处理机制来进行处理。
异常处理语法
基本的异常处理结构的PL/SQL包含3个部分:
- 在定义区,定义异常。如果使用预定义异常,则不用再定义区定义异常。
- 在执行区,可以显式地触发异常,也可以有PL/SQL引擎触发异常。
- 只要在执行过程中出现了异常,那么在执行区中后续的语句将立即停止执行,语句执行流程跳转到异常处理区。
看一个典型的异常处理的PL/SQL示例:
DECLARE e_duplicate_name EXCEPTION; --定义异常 v_ename emp.ename%TYPE; --保存姓名的变量 v_newname emp.ename%TYPE := '史密斯'; --新插入的员工名称 BEGIN BEGIN --在嵌套块中处理异常 SELECT ename INTO v_ename FROM emp WHERE empno = 7369; IF v_ename = v_newname THEN RAISE e_duplicate_name; --如果产生异常,触发e_duplicate_name异常 END IF; EXCEPTION WHEN e_duplicate_name THEN v_newname:='刘大夏'; END; --如果没有异常,则执行插入语句 INSERT INTO emp VALUES (7881, v_newname, '职员', NULL, TRUNC (SYSDATE), 2000, 200, 20);EXCEPTION --异常处理语句块 WHEN OTHERS THEN DBMS_OUTPUT.put_line('异常编码:'||SQLCODE||' 异常信息:'||SQLERRM); END;
再看一个示例:
DECLARE e_outerexception EXCEPTION; e_innerexception EXCEPTION; e_threeexception EXCEPTION; BEGIN BEGIN RAISE e_innerexception; RAISE e_outerexception; RAISE e_threeexception; EXCEPTION WHEN e_innerexception THEN RAISE e_outerexception; WHEN e_outerexception THEN --异常处理代码 WHEN OTHERS THEN --异常处理代码 END; EXCEPTION WHEN e_outerexception THEN --异常处理代码 END;
阅读全文
1 0
- Oracle PL/SQL开发基础(第二十九弹:异常处理简介)
- Oracle PL/SQL开发基础(第二十七弹:事务处理简介)
- Oracle PL/SQL开发基础(第十九弹:集合的异常处理)
- Oracle PL/SQL开发基础(第三十六弹:异常处理的一些经验)
- 十九、oracle pl/sql简介
- 十九 oracle pl/sql 简介
- 十九、oracle pl/sql简介
- 十九、oracle pl/sql简介
- 十九、oracle pl/sql简介
- Oracle PL/SQL开发基础(第二弹:使用数据字典视图查看表约束)
- Oracle PL/SQL开发基础(第二十四弹:游标基本结构)
- Oracle PL/SQL开发基础(第二十五弹:操纵游标数据)
- Oracle PL/SQL开发基础(第二十六弹:游标变量)
- Oracle PL/SQL开发基础(第二十八弹:使用锁定)
- Oracle PL/SQL开发基础(第三十弹:预定义异常)
- Oracle PL/SQL开发基础(第三十一弹:自定义异常)
- Oracle PL/SQL开发基础(第三十五弹:异常的传递)
- Oracle:pl/sql 异常处理
- Mysql 练习题 加Mysql的表
- 【51nod 教程】矩阵取数问题(动态规划)
- 渐进增强和优雅降级之间有什么不同?
- 如何用SpringBoot框架来接收multipart/form-data文件
- poj 3126 Prime Path bfs
- Oracle PL/SQL开发基础(第二十九弹:异常处理简介)
- 普通短信发送流程
- TypeError: Can not convert a float32 into a Tensor or Operation.
- 极光推送
- CUDA 8.0 + VS2013 + win10 x64开发环境搭建
- 网络编程作业 UDP (客户与咨询通话)
- Catalan数
- 第六天
- 线程基础1