捕获所有错误 psql 函数异常

Catch all error psql function exception

我正在编写一个具有异常捕获和忽略功能的函数。我想捕获所有异常并忽略它。无论如何都可以捕获所有异常而不是单独捕获?

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;

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

您可以使用 EXCEPTION WHEN OTHERS 子句:

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

无一例外地使用此子句不是一个好主意。当您使用此模式时,调试、问题诊断可能会很糟糕。这是一个强大的功能(有时是必要的),但很危险!

注意 - 受保护部分的入口、末端离开负载很大。保存点和释放保存点的开销不小。此构造的开销 显着高于 Oracle(尽管在视觉上相似,但它做的事情不同)。虽然这段代码看起来像 PL/SQL 中的代码,但实现方式完全不同。如果您希望您的应用程序负载更高,请谨慎使用它(不要在循环内,...)