捕获所有错误psql函数异常

时间:2017-02-02 15:49:24

标签: exception-handling plpgsql psql

我正在编写一个异常捕获和忽略的函数。我想抓住所有异常并忽略它。反正有没有抓住所有的例外而不是单独的?

CREATE OR REPLACE FUNCTION ADD_TABLE_TO_ARCHIVE (a TEXT, b TEXT)
RETURNS INTEGER AS $SUCCESS$
DECLARE SUCCESS INTEGER;
BEGIN
    SUCCESS = 0;
    BEGIN
        UPDATE ARCHIVE_STATUS
        SET *****
        WHERE ***;
        SUCCESS = 1;
    EXCEPTION
        WHEN UNIQUE_VIOLATION 
        SUCCESS = 0;
    END;

   RETURN SUCCESS;
END;
$SUCCESS$ LANGUAGE plpgsql;

取代唯一的例外,它应该是任何例外......

1 个答案:

答案 0 :(得分:9)

您可以使用EXCEPTION WHEN OTHERS子句:

BEGIN
  do something
EXCEPTION WHEN OTHERS THEN
  handle any exception
END;

没有一些例外,使用这个条款并不是一个好主意。使用此模式时,调试,问题诊断可能会非常糟糕。它是强大的功能(有时是必要的),但危险!