我需要处理ORA-01400 错误 http://www.techonthenet.com/oracle/errors/ora01400.php(无法使用异常句柄将 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;
预定义的 PL/SQL 异常是special到甲骨文。你真的不能惹这些。当您想要拥有一组自己的预定义异常时,您无法像标准异常一样“全局”声明它们。相反,创建一个例外情况包含所有异常声明的包并在您的应用 code.
Example:
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;
/
现在使用包中定义的异常
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;
/
Source: http://www.orafaq.com/wiki/Exception http://www.orafaq.com/wiki/Exception
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)