gpt4 book ai didi

oracle - 处理ORACLE异常

转载 作者:行者123 更新时间:2023-12-01 10:08:04 27 4
gpt4 key购买 nike

我需要使用异常句柄处理ORA-01400 error(无法将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异常是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;
/

现在使用包中定义的异常
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 - 处理ORACLE异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1975290/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com