Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle11g 在什么情况下我们可以使用pragma\u exception\u init_Oracle11g - Fatal编程技术网

Oracle11g 在什么情况下我们可以使用pragma\u exception\u init

Oracle11g 在什么情况下我们可以使用pragma\u exception\u init,oracle11g,Oracle11g,有人能解释为什么我们需要pragma异常init吗。我们有一个用户定义的异常,它与pragma的作用相同。非常感谢您的回答。pragma exception\u init用于为异常提供名称,以便您可以在异常处理程序中通过该名称引用异常。数千个Oracle异常中只有少数具有预定义的名称。您可以使用exception_init为这些其他异常创建名称 看 我正在编辑我以前的答案,因为我可以在这里插入格式化文本。 在您的示例中,您正在定义一个正在抛出的异常,但是如果您希望捕获系统正在抛出但未命名的现有异

有人能解释为什么我们需要pragma异常init吗。我们有一个用户定义的异常,它与pragma的作用相同。非常感谢您的回答。

pragma exception\u init用于为异常提供名称,以便您可以在异常处理程序中通过该名称引用异常。数千个Oracle异常中只有少数具有预定义的名称。您可以使用exception_init为这些其他异常创建名称

我正在编辑我以前的答案,因为我可以在这里插入格式化文本。 在您的示例中,您正在定义一个正在抛出的异常,但是如果您希望捕获系统正在抛出但未命名的现有异常,该怎么办?在下面的示例中,我处理了两个特定的错误“DATA_NOT_FOUND”和ORA-600,这是一个系统错误(是的,我有一些代码可以得到这些错误)


例如:创建或替换过程proc_pragma_demo,因为i编号:=1;i_大于_零异常;pragma exception_init(大于零,-1234);如果(i>0)开始,则将i_提高到大于零;如果结束;当i_大于_零时异常,然后dbms_输出。put_行('i值大于零:');结束;在上面的例子中,即使我们没有pragma,它也做同样的工作。布拉格语的意义是什么?非常感谢,布莱恩。我明白了。
CREATE OR REPLACE PROCEDURE exception_init_demo
AS
    l_routine             VARCHAR2 (30) := $$plsql_unit;
    severe_system_error   EXCEPTION;
    PRAGMA EXCEPTION_INIT (severe_system_error, -600);
BEGIN
    -- Execution code goes here
    NULL;
EXCEPTION
    WHEN severe_system_error
    THEN
        -- Severe error, log it, notify the dba, re-raise the exception
        log_error (
            p_application => $$plsql_unit
          , p_routine     => l_routine
          , p_message     => SQLERRM || UTL_TCP.crlf || DBMS_UTILITY.format_error_backtrace ()
        );
        notify_dba;
        RAISE;
    WHEN NO_DATA_FOUND
    THEN
        -- No data was found, this is OK, ignore error and return
        return;
    WHEN OTHERS
    THEN
        -- all other errors we will log and re-raise
        log_error (
            p_application => $$plsql_unit
          , p_routine     => l_routine
          , p_message     => SQLERRM || UTL_TCP.crlf || DBMS_UTILITY.format_error_backtrace ()
        );
        RAISE;
END;