处理ORACLE例外

前端之家收集整理的这篇文章主要介绍了处理ORACLE例外前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要处理 ORA-01400 error(不能使用异常句柄将NULL插入(“SCHEMA”.“TABLE_NAME”.“COLUMN_NAME”)).

ORACLE预定义了一些例外(例如ACCESS_INTO_NULL,ZERO_DIVIDE等),但显然没有为ORA-01400错误定义异常,我该如何处理这个特定的错误代码

我需要这样的东西(接受其他建议).

@H_403_5@.... ... INSERT INTO MY_TABLE (CODE,NAME) VALUES (aCode,aName); COMMIT; EXCEPTION WHEN NULL_VALUES THEN /* i don't know this value,exist?*/ Do_MyStuff(); WHEN OTHERS THEN raise_application_error(sqlCODE,MY_OWN_FORMAT_EXCEPTION(sqlCODE,sqlERRM),TRUE); END;
预定义的PL / sql异常对Oracle来说是特殊的.你真的不能搞砸那些.如果您想拥有自己的一组预定义异常,则不能像标准的那样“全局”声明它们.相反,创建一个包含所有异常声明的异常包,并在您的应用程序代码中使用它.

例:

@H_403_5@CREATE OR REPLACE PACKAGE my_exceptions AS insert_null_into_notnull EXCEPTION; PRAGMA EXCEPTION_INIT(insert_null_into_notnull,-1400); update_null_to_notnull EXCEPTION; PRAGMA EXCEPTION_INIT(update_null_to_notnull,-1407); END my_exceptions; /

现在使用包中定义的异常

@H_403_5@CREATE OR REPLACE PROCEDURE use_an_exception AS BEGIN -- application specific code ... NULL; EXCEPTION WHEN my_exceptions.insert_null_into_notnull THEN -- application specific handling for ORA-01400: cannot insert NULL into (%s) RAISE; END; /

资料来源:http://www.orafaq.com/wiki/Exception

猜你在找的Oracle相关文章