`
gpqhl0071
  • 浏览: 54724 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

ORACLE--Function异常处理(EXCEPTION)

 
阅读更多
存储过程在抛出异常的时候可以通过下面的代码,去获取异常并把异常UPDATE到某个字段内,方便在检查数据时,查看数据抛出的异常。
WHEN OTHERS THEN
--ROLLBACK;
--获取异常信息
V_ERRCODE:= SQLCODE ;
V_ERRMSG:= SUBSTR(SQLERRM , 1, 150);
--同步存储过程出现错误 2 -- 同步失败
UPDATE PRPDRATIONCLAUSEKINDTEMP
SET STATUS = '2',ERRMSG = V_ERRMSG,ERRCODE = V_ERRCODE
WHERE RATIONCODE = CCIC_RATION_DETAIL.RATIONCODE
AND CLAUSECODE = CCIC_RATION_DETAIL.CLAUSECODE
AND KINDCODE = CCIC_RATION_DETAIL.KINDCODE;
COMMIT; 


ORACLE存储过程常见异常
引用
exception  oracle error  sqlcode value  condition
no_data_found  ora-01403  +100  select into 语句没有符合条件的记录返回
too_many_rows  ora-01422  -1422  select into 语句符合条件的记录有多条返回
dup_val_on_index  ora-00001  -1  对于数据库表中的某一列,该列已经被限制为唯一索引,程序试图存储两个重复的值
value_error  ora-06502  -6502  在转换字符类型,截取或长度受限时,会发生该异常,如一个字符分配给一个变量,而该变量声明的长度比该字符短,就会引发该异常
storage_error  ora-06500  -6500  内存溢出
zero_divide  ora-01476  -1476  除数为零
case_not_found  ora-06592  -6530  对于选择case语句,没有与之相匹配的条件,同时,也没有else语句捕获其他的条件
cursor_already_open  ora-06511  -6511  程序试图打开一个已经打开的游标
timeout_on_resource  ora-00051  -51  系统在等待某一资源,时间超时
今天在同步数据时抛出
ORA-04062: timestamp of procedure "CCICINS.P_DODUMP_CCICINS" has been changed

错误原因:两个存储过程在互相调用时,其中一个被调用的存储过程恰好刚编译,而调用方的存储过程还没有编译,这个时间点的数据,就抛出了这个异常。
解决方案:将调用方的存储过程重新编译,重新同步数据即可解决。

抛出异常的三种方式:
由三种方式抛出异常
1、通过PL/SQL运行时引擎 
2、使用RAISE语句 
3、调用RAISE_APPLICATION_ERROR存储过程 
//抛出异常方式讲解
1、当数据库或PL/SQL在运行时发生错误时,一个异常被PL/SQL运行时引擎自动抛出。
2、异常也可以通过RAISE语句抛出,如:RAISE exception_name; 
3、RAISE_APPLICATION_ERROR内建函数用于抛出一个异常并给异常赋予一个错误号以及错误信息
(自定义异常的缺省错误号是+1,缺省信息是User_Defined_Exception)
个人感觉前两个经常会用到,第三个好像不太常用。

部分内容来自:
http://blog.csdn.net/jojo52013145/article/details/6585833
分享到:
评论

相关推荐

    oracle-pl-sql-programming-5th-edition

    Understand and use new Oracle Database 11g features, including the edition-based redefinition capability, the function result cache, the new CONTINUE statement, fine-grained dependency tracking, ...

    oracle-电子书资料

    1. **基础概念**:PL/SQL由声明部分(Declarations)、执行部分(Execution)和异常处理部分(Exception Handling)组成。声明部分定义变量、常量和游标;执行部分包含程序逻辑;异常处理部分用于捕获和处理运行时...

    ORACLE NO_DATA_FOUND的三种处理办法

    在PL/SQL块中,你可以使用`BEGIN...EXCEPTION...END`结构来捕获并处理`NO_DATA_FOUND`异常。当异常发生时,程序会跳转到`EXCEPTION`部分,而不是终止执行。例如: ```sql DECLARE cursor_name CURSOR FOR SELECT ...

    Oracle-存储过程、函数、触发器和包.ppt

    /* 异常处理 */ END[procedure_name]; ``` 参数模式有三种:`IN`、`OUT`和`IN OUT`。`IN`参数仅用于传递输入值,不能在过程中修改;`OUT`参数用于输出结果,调用时无需提供值,过程结束后返回结果;`IN OUT`参数...

    ORACLE_DB_学习好资料

    - 异常处理:EXCEPTION,RAISE,WHENEVER。 - 游标:用于逐行处理查询结果。 - 包(PACKAGE):将相关的过程和函数组合在一起,提升代码复用和管理。 3. Oracle数据库管理: - 表空间和数据文件:存储数据库...

    Oracle PL-SQL语言初级教程

    异常处理部分则用于捕获并处理运行时错误。一个基本的PL/SQL块结构如下: ```sql DECLARE -- 声明部分 variable_name datatype; BEGIN -- 执行部分 statement1; statement2; EXCEPTION -- 异常处理部分 WHEN...

    oracle PL-SQL 基础

    根据提供的文件信息,我们可以深入探讨Oracle PL/SQL的基础知识点,包括其历史背景、优势、基本结构、以及变量的定义和使用等内容。 ### PL/SQL的历史 PL/SQL(Procedural Language for SQL)是一种专门为Oracle...

    11oracle的PL-SQL编程-块.过程 PPT

    PL/SQL(Procedural Language/Structured Query Language)是Oracle专有的SQL扩展,它结合了SQL查询语言和过程式编程语言的特点,使得开发者能够编写复杂的业务逻辑和数据处理程序。 在PL/SQL中,"块"(Block)是其...

    oracle plsql

    Oracle是甲骨文公司推出的一个大型关系数据库管理系统,广泛应用于企业级应用中。PL/SQL是Oracle的程序化SQL,是Oracle对...同时,了解如何处理异常、使用游标以及如何编写程序包是进行高效Oracle开发不可或缺的部分。

    oracle function 实现七种银行企业帐对帐

    虽然示例代码中未明确展示错误处理机制,但在实际应用中,通常会结合异常处理块(如`EXCEPTION`块)来处理可能发生的错误情况,以确保程序的健壮性和稳定性。 通过以上分析,我们可以看出这两个Oracle Function在...

    存储过程1--清华大学计算中心ORACLE培训资料.pptx

    在处理异常时,`WHEN OTHERS THEN`用于捕获所有未明确处理的异常,这样可以确保程序即使遇到未预见的问题也能优雅地结束,而不是简单地崩溃。 总的来说,Oracle的存储过程和异常处理机制为数据库管理提供了强大的...

    ORACLE plsal基础语句代码编写

    PL/SQL支持异常处理,通过`BEGIN-EXCEPTION-END`块可以捕获并处理运行时错误。例如,`EXCEPTION WHEN OTHERS THEN`用于捕获所有未明确处理的异常。 6. **过程(Procedure)和函数(Function)**: 过程是一组PL/...

    Oracle存储过程实例使用显示游标

    异常处理部分使用了PL/SQL的`WHEN OTHERS THEN`子句,这能捕获所有未被其他异常处理程序处理的错误。在出现错误时,可以打印错误信息,而不是让整个过程终止。 总结来说,"Oracle存储过程实例使用显示游标"是关于...

    oracle优秀工具PL-SQL工具书

    7. **异常处理**:通过EXCEPTION部分,你可以捕获并处理运行时错误,保证程序的健壮性。 8. **动态SQL**:允许在PL/SQL程序中构建和执行SQL语句,增加了灵活性。 9. **包(Package)**:将相关的子程序和变量打包...

    oracle对象创建实例

    在Oracle中,我们还可以创建函数(Function),它是类似于存储过程的可调用单元,但必须返回一个值。函数的创建语法类似于存储过程,只需在PROCEDURE关键字后改为FUNCTION,并在结束处指定返回类型: ```sql CREATE...

    Oracle PL SQL存储过程以及函数编

    PL/SQL提供了异常处理机制,通过`EXCEPTION`关键字捕获并处理程序运行时的错误。可以自定义异常,也可以使用预定义的系统异常。 总结,Oracle PL/SQL存储过程和函数是数据库编程的重要组成部分,它们提高了数据库...

    Oracle2BPL-SQL.rar_oracle_pl/sql

    2. **流程控制语句**:包括条件判断(IF-THEN-ELSIF-ELSE)、循环(FOR、WHILE、LOOP)和异常处理(BEGIN-EXCEPTION-END)。这些语句使得PL/SQL可以实现复杂的逻辑控制。 3. **子程序**:PL/PROCEDURE和FUNCTION是...

    oracle_10g-pl-sql-programming

    - **异常处理块**:使用EXCEPTION块来处理可能发生的异常,可以定义不同的异常处理逻辑。 ##### 4. 存储过程与函数 - **创建存储过程/函数**:使用CREATE PROCEDURE或CREATE FUNCTION命令。 - **调用存储过程/函数...

    ORACLE_PlSql-甲骨文学习笔记

    PL/SQL 的基本单位是块,它由三个部分组成:声明部分 (`DECLARE`), 执行部分 (`BEGIN`) 和异常处理部分 (`EXCEPTION`). ```plsql DECLARE -- 声明部分 BEGIN -- 执行部分 EXCEPTION -- 异常处理部分 END; ``` #...

    Oracle PL-SQL编程 创建存储过程、函数、触发器等

    - **exception handlers**:异常处理部分,用于处理可能发生的错误。 ##### 示例: ```sql CREATE OR REPLACE PROCEDURE greet_user(p_name IN VARCHAR2) IS BEGIN DBMS_OUTPUT.PUT_LINE('Hello, ' || p_name); ...

Global site tag (gtag.js) - Google Analytics