`

Oracle中的异常处理

阅读更多

Oracle中的异常处理:
1.Oracle内置的已命名的异常,如no_data_found。


例:
create or replace procedure p_test_exception(p_userid in varchar2,p_empno in varchar2)
as
v_ename varchar2(32);
v_error_text varchar2(500);
begin
begin
select ename into v_ename from emp where empno = p_empno;
exception
when no_data_found then
v_error_text := '没有empno为' || p_empno || '的员工';
t_log_package.log_error(p_userid,'',v_error_text);
return;
end;
update emp set salary = salary + 1000 where empno = p_empno;
commit;
end p_test_custom_exception;


2.用户自定义异常:
2.1在声明部分用custom_exception_name exception;声明一个自定义异常
2.2根据程序逻辑抛出异常:raise exception;
2.3在异常处理部分处理异常:
when custom_exception_name then
这种异常是我们根据业务逻辑抛出的异常。


例:
create or replace procedure p_test_custom_exception(p_userid in varchar2)
as
user_exception exception;
v_count number:= 0;
v_error_text varchar2(500);
begin
select count(*) into v_count from student s where s.class is null;
if v_count = 0 then
v_error_text := 'There are ' || v_count || ' student(s) has/have not been assigned classes.';
raise user_exception;
end if;
exception
when user_exception then
p_package_error.log_error(p_userid,'p_test_custom_exception',v_error_text);
end p_test_custom_exception;


3.用户自定义异常:
3.1.在声明部分用custom_exception_name exception;声明一个自定义异常;
3.2在声明部分用 PRAGMA EXCEPTION_INIT(custom_exception_name,oracle_error_code);来初始化异常。
3.3在异常处理部分处理异常。
这种类型适合处理Oracle的一些未命名的异常,如表被锁。
ps:我们通常可能直接使用的when others来处理。


例:
create or replace procedure p_test_custom_exception(p_userid in varchar2,p_empno in varchar2,p_salary in number)
as
lock_wait exception;
--ORA-00054: 资源正忙,要求指定 NOWAIT
PRAGMA EXCEPTION_INIT(lock_wait,-54);
v_count number:= 0;
v_error_text varchar2(500);
begin
update emp e set e.salary = e.salary + p_salary where e.emp_no = p_empno;
commit;
exception
when lock_wait then
rollback;
v_error_text := '表被锁,请稍候再试!';
p_package_error.log_error(p_userid,'p_test_custom_exception',v_error_text);
end p_test_custom_exception;


ps:以上例子仅是举例,可能不太合理。

分享到:
评论

相关推荐

    oracle笔记异常处理

    oracle笔记异常处理,异常处理的代码案例和知识点笔记!

    ORACLE异常处理剖析.pdf

    Oracle异常处理是数据库管理和应用程序开发中的关键环节,它涉及到对程序执行过程中可能出现的错误和异常情况进行有效管理和响应。Oracle数据库,作为一款广泛使用的商业关系型数据库管理系统,提供了强大的异常处理...

    Oracle 存储过程异常处理.docx

    Oracle 存储过程异常处理是指在 Oracle 数据库中使用存储过程时出现的异常情况的处理方法。异常处理是指在程序执行过程中出现错误或异常时,采取相应的处理措施,以确保程序的可靠性和安全性。 一、异常的优点 ...

    Oracle中异常处理

     能够检测并且进行错误处理的叫做异常,一般分为用户自定义异常,系统预定义异常。  预定义异常  一:除数是0的系统异常  declare  v_number Number(2):=10;  v_zero Number(2):=0;  v_result Number...

    ORACLE 异常错误处理

    根据ORACLE提供的异常处理机制,我们可以将异常分为三类: 1. **预定义异常**:这是由ORACLE系统预先定义好的一组异常,当特定的错误发生时,系统会自动抛出相应的异常。例如,在尝试插入一条已经存在的记录到具有...

    自己总结的oracle常见异常处理步骤

    oracle异常处理步骤自己总结的,不太成熟,大家可以不看,只是我的备忘录

    Oracle_存储过程exception异常处理大全及实例经典最终.docx

    Oracle 存储过程 exception 异常处理大全及实例经典最终是 Oracle 数据库中存储过程的异常处理机制。异常处理是指在程序执行过程中出现的错误或未预料到的事件,需要通过异常处理机制来捕捉和处理这些错误,以确保...

    oracle异常处理课后答案

    这个是oracle课成异常处理章节后面的部分习题答案,大概四五道题的答案。

    oracle 异常处理剖析共.pdf

    总结来说,Oracle异常处理是通过预定义和自定义异常来实现的,它增强了程序对错误的响应能力,帮助开发者在遇到问题时能够有序地处理,避免程序崩溃,保证系统的正常运行。理解并熟练掌握Oracle的异常处理机制,对于...

    Oracle存储过程中自定义异常

    ORACLE 用户自定义异常小例子  1.进入pl/sql测试窗口  2.执行语句  declare  empname varchar2(255);  customize_exp EXCEPTION; –自定义异常  begin  FOR c IN (select d.* from scott.dept d) ...

    oracle自定义异常

    #### 一、Oracle异常处理机制简介 在Oracle PL/SQL编程中,异常处理是一项非常重要的功能。它可以帮助开发者捕获并处理程序运行时可能发生的错误情况,确保应用程序能够稳定可靠地运行。Oracle PL/SQL支持多种类型...

    oracle异常处理

    Oracle 异常处理是 PL/SQL 编程中不可或缺的一部分,它允许开发者优雅地处理程序运行时遇到的各种错误。在 PL/SQL 中,异常处理主要分为预定义异常、非预定义异常以及自定义异常。 预定义异常是 Oracle 为常见错误...

    ORACLE游标与异常处理

    在Oracle数据库中,游标(Cursor)和异常处理(Exception Handling)是PL/SQL编程的重要组成部分,它们在处理复杂逻辑和确保数据完整性方面起到关键作用。以下是对这两个主题的详细阐述。 首先,让我们来理解Oracle...

    oracle异常及触发器.pptx

    Others 异常处理器将对所有语法的异常情态进行处理,一般放在异常处理的最后,可以保证所有的错误都被检测到。 Oracle 异常及触发器提供了一种有效的错误处理机制,可以帮助程序员更好地处理程序执行过程中的错误。

    oracle游标和异常处理

    在Oracle PL/SQL中,**异常处理**是确保程序健壮性的重要机制。异常可以分为预定义异常和自定义异常两种类型。 ##### 4.1 预定义异常 Oracle提供了一系列预定义异常,如`NO_DATA_FOUND`、`TOO_MANY_ROWS`等,这些...

    ORACLE 异常处理总结.doc

    Oracle 异常处理是PL/SQL编程中的关键组成部分,它允许开发者优雅地处理程序执行过程中可能出现的错误,确保系统的稳定性和可靠性。异常处理是通过异常情况(EXCEPTION)和异常处理器(EXCEPTION HANDLER)来实现的...

    oracle改sga导致数据库启动异常处理办法

    "Oracle SGA 参数调整导致数据库启动异常处理方法" 在 Oracle 数据库中,SGA(System Global Area)参数调整可能会导致数据库启动异常。这种情况下,需要了解 SGA 参数的调整方法和恢复数据库的方法。 一、SGA ...

    ORACLE 游标 异常 存储过程

    在本篇讨论中,我们将深入理解Oracle游标、异常处理以及如何在存储过程中使用它们。 1. **Oracle游标**: - **定义**:Oracle游标是数据库系统提供的一种机制,用于在结果集中定位并处理单条记录。它实际上是一个...

    oracle预定义异常

    oracle预定义异常, ORACLE开发存储过程,函数,触发器等程序时,会经常使用到异常处理,该文档列举了常见的异常以及异常说明

Global site tag (gtag.js) - Google Analytics