五、异常错误处理
有三种类型的异常错误:预定义(Predefined)错误、非预定义(Predefined)错误、用户定义(User_define)错误。
例1:预定义的异常处理
declare
v_empno employees.employee_id%type := &v_empno;
v_sal employees.salary%type;
begin
select salary into v_sal from employees where employee_id = v_empno for update;
if v_sal<3000 then
update employees set salary = salary + 3000 where employee_id = v_empno;
dbms_output.put_line('编码为'||v_empno||'员工工资已更新');
else
dbms_output.put_line('编码为'||v_empno||'员工工资不需要更新');
end if;
exception
when no_data_found then
dbms_output.put_line('数据库中没有编码为'||v_empno||'的员工');
when too_many_rows then
dbms_output.put_line('程序运行错误,请使用游标');
when others then
dbms_output.put_line('其他错误');
end;
例2:非预定义的异常处理
declare
v_depno dept.deptno%type := &v_depno;
deptno_remaining exception;
-- -2292 是违反一致性约束的错误代码
pragma exception_init(deptno_remaining,-2292);
begin
delete from dept where deptn = v_depno;
exception
when deptno_remaining then
dbms_output.put_line('违反数据完整性约束');
when others then
dbms_output.put_line(sqlcode||'--'||sqlerrm);
end;
例3:用户自定义的异常处理
declare
v_empid employees.employee_id%type := &v_empid;
no_result exception;
begin
update employees set salary = salary + 100 where employee_id = v_empid;
if sql%notfound then
raise no_result;
end if;
exception
when no_result then
dbms_output.put_line('数据更新失败');
when others then
dbms_output.put_line('出现其他异常');
end;
SQLCODE 返回错误代码数字
SQLERRM 返回错误信息
如:sqlcode=-100 --> sqlerrm='no_data_found'
例4:将ORACLE错误代码及其信息存入错误代码表
create table errors(errnum number(4),errmsg varchar2(100));
declare
err_msg varchar2(100);
begin
/* 得到所有ORACLE错误信息 */
for err_num in -100..0 loop
err_msg:=sqlerrm(err_num);
insert into errors values(err_num,err_msg);
end loop;
end;
drop table errors;
分享到:
相关推荐
oracle 9i pl/sql程序设计笔记。
《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...
Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发
Oracle Database 11g PL/SQL程序设计 ★第一部分(part1)★ ——※ 注意:该电子书99.4M,分为2个压缩包, 需要将全部2个压缩包下载才能解压缩,单个部分无法解压。 此为第1个包,另外1个包以及源代码包可通过本人...
《oracle pl/sql程序设计(第5版)》基于oracle数据库11g,从pl/sql编程、pl/sql程序结构、pl/sql程序数据、pl/sql中的sql、pl/sql应用构建、高级pl/sql主题6个方面详细系统地讨论了pl/sql以及如何有效地使用它。...
1、PL/SQL简介 2、PL/SQL基础 3、记录和表 4、在PL/SQL中使用SQL 5、内置SQL函数 6、游标 7、过程和函数 ...
PL/SQL 程序设计 本章主要重点: PL/SQL概述 PL/SQL块结构 PL/SQL流程 运算符和表达式 游标 异常处理 数据库存储过程和函数 包 触发器
《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...
最容易上手的PL/SQL学习教程-有经过测试的丰富案例,可以直接复制代码至SQL*PLUS中运行,知识点精确明了,是快速学习PL/SQL的绝好资料。
《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...
Oracle技术文档,Pl/SQl 的使用说明书
pl/sql程序设计 为了宇宙和平,20字!
pl/sql笔记pl/sql笔记pl/sql笔记pl/sql笔记pl/sql笔记pl/sql笔记pl/sql笔记
Oracle PL/SQL程序设计(第5版)(上下册),《Oracle PL/SQL程序设计(第5版)》基于 Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、 PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细...
Oracle PL/SQL程序设计,经典书籍,既可以当教材学习,也可以当手册查询。
《oracle pl/sql程序设计(第5版)(上下册)》基于oracle数据库11g,从pl/sql编程、pl/sql程序结构、pl/sql程序数据、pl/sql中的sql、pl/sql应用构建、高级pl/sql主题这6个方面详细系统地讨论了pl/sql以及如何有效地...
《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...
PL/SQL本身涉及的知识点浩瀚、庞杂,初学者根本无法依靠自身能力理清头绪,学习成本极高.本书对知识点进行了体系化的梳理,化繁杂为有序,突出重点,直指核心,循序渐进,尽可能为学习者提供“捷径”,仅仅只是这...
权威PL/SQL语言参考书
《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...