PLSQL-异常处理
时间:2022-07-25
本文章向大家介绍PLSQL-异常处理,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
异常处理
加入异常处理的语句块结构
declare
--声明变量
begin
--程序体
exception
--异常处理
end;
常见的异常
declare
vSal emp.sal%type;
begin
select sal into vSal from emp;
exception
when too_many_rows then
dbms_output.put_line('单一变量不能存放多条数据');
when others then
dbms_output.put_line('发生了异常');
end;
declare
vSal emp.sal%type;
begin
select sal into vSal from emp where empno = 1;
exception
when no_data_found then
dbms_output.put_line('查询结果没有数据');
when others then
dbms_output.put_line('Error');
end;
自定义异常
declare
ex_custom_invaild_age exception; --自定义的异常
age int;
begi
age := &请输入年龄;
if (age < 0) then
raise ex_custom_invaild_age; --引发自定义异常
else
dbms_output.put_line('年龄是:' || age);
end if;
exception
when ex_custom_invaild_age then
dbms_output.put_line('非法的年龄');
end;
引发应用程序异常
- raise_application_error(异常编号,说明);
declare
age int;
begin
age := &请输入年龄;
if (age < 0) then
raise_application_error(-20500, '年龄只能是正整数');
else
dbms_output.put_line('年龄是:' || age);
end if;
end;
非预定义异常
declare
ex_custom_error exception; --自定义异常
pragma exception_init(ex_custom_error, -1); --把一个编号和一个自定义异常关联,
--相当于把-1编号的异常命名为ex_custom_error,这样就可以捕获这种异常
begin
insert into dept values(10, 'aaa', 'bbb');
exception
when ex_custom_error then
dbms_output.put_line('部门编号已经存在');
end;
异常日志处理
create table errorLog (
id number primary key,
errCode number,
errMsg varchar2(1024),
errDate date
);
--创建序列,从1开始,每次加1
create sequence seq_errorLog_id start with 1 increment by 1;
declare
vDeptno dept.deptno%type := 10;
vErrCode number;
vErrMsg varchar2(1024);
begin
delete from dept where deptno = vDeptno;
commit;
exception
when others then
rollback;
vErrCode := SQLCODE; --SQL异常编号
vErrMsg := SQLERRM; --SQL异常信息
--SQLCODE和SQLERRM为异常处理自带变量
insert into errorLog values(seq_errorLog_id.nextval, vErrCode, vErrMsg, sysdate);
commit;
end;
select * from errorLog
转载自
http://www.cnblogs.com/hoojo/archive/2011/05/03/2035350.html
喜欢 (1)or分享 (0)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法