PostgreSQL异常处理详解及GET STACKED DIAGNOSTICS函数

7

我正在使用简单的函数来处理异常,代码如下:

CREATE OR REPLACE FUNCTION test(INT4) RETURNS void as $$

DECLARE

    v_state   TEXT;
    v_msg     TEXT;
    v_detail  TEXT;
    v_hint    TEXT;
    v_context TEXT;
BEGIN

    BEGIN
        INSERT INTO test2 (id) VALUES ($1);
    EXCEPTION WHEN others THEN
        GET STACKED DIAGNOSTICS
            v_state   = RETURNED_SQLSTATE,
            v_msg     = MESSAGE_TEXT,
            v_detail  = PG_EXCEPTION_DETAIL,
            v_hint    = PG_EXCEPTION_HINT,
            v_context = PG_EXCEPTION_CONTEXT;
        raise notice E'Got exception:
            state  : %
            message: %
            detail : %
            hint   : %
            context: %', v_state, v_msg, v_detail, v_hint, v_context;
    END;
    RETURN;
END;
$$ language PLpgSQL;

但是它会出现ERROR: syntax error at or near "STACKED" GET STACKED DIAGNOSTICS的错误。

我正在使用PostgreSQL 9.1和pgAdmin 3。

1个回答

5

您需要升级到PostgreSQL 9.2版本...据我所知,9.1版本不支持GET STACKED DIAGNOSTICS。


是的,aleroot非常感谢,我已经将我的PostgreSQL版本从9.1升级到9.2,现在它运行良好。 - khushbu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接