gpt4 book ai didi

sql - 如何记录 Oracle 包中的所有异常?

转载 作者:行者123 更新时间:2023-12-04 02:37:03 26 4
gpt4 key购买 nike

我正在尝试在 Oracle 包中记录所有异常。这是我在程序结束时的内容:

EXCEPTION
WHEN OTHERS THEN
INSERT INTO VSLogger (MESSAGE) VALUES ('Caught Exception');

这工作正常,但是我也想记录错误代码和消息。我试过:
EXCEPTION
WHEN OTHERS THEN
INSERT INTO VSLogger (MESSAGE) VALUES ('Caught Exception: Error ' || SQLCODE || ', Msg: ' || SQLERRM);

但这给了我错误:
490/7    PL/SQL: SQL Statement ignored
490/100 PL/SQL: ORA-00984: column not allowed here

这样做的正确方法是什么?谢谢!

最佳答案

您不能使用 SQLERRM直接 - 你必须将它分配给一个中间变量。请注意,Oracle 9i 会让您逃脱惩罚,但这一直是 documented behavior .见 here对于一些示例代码。

您还可以考虑将这一位包装在一个自治事务中,这样即使您的 PL/SQL 代码的事务被回滚,它也会被记录下来。

关于sql - 如何记录 Oracle 包中的所有异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9184865/

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