RRU*_*RUZ 8 oracle plsql exception-handling ora-01400
我需要处理ORA-01400错误(无法使用异常句柄将NULL插入("SCHEMA"."TABLE_NAME"."COLUMN_NAME")).
ORACLE预定义了一些例外(例如ACCESS_INTO_NULL,ZERO_DIVIDE等),但显然没有为ORA-01400错误定义异常,我该如何处理这个特定的错误代码?
我需要这样的东西(其他建议被接受).
....
...
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;
Run Code Online (Sandbox Code Playgroud)
Ada*_*kes 13
预定义的PL/SQL异常对Oracle来说是特殊的.你真的不能搞砸那些.如果您想拥有一组自己的预定义异常,则不能像标准的那样"全局"声明它们.相反,创建一个包含所有异常声明的异常包,并在应用程序代码中使用它.
例:
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;
/
Run Code Online (Sandbox Code Playgroud)
现在使用包中定义的异常
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;
/
Run Code Online (Sandbox Code Playgroud)
资料来源:http://www.orafaq.com/wiki/Exception
| 归档时间: |
|
| 查看次数: |
14743 次 |
| 最近记录: |