web-dev-qa-db-ja.com

すべてのエラー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;

ユニークな例外の代わりに、それはどんな例外であるべきです...

14
Pavan Ebbadi

EXCEPTION WHEN OTHERS 句:

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

いくつかの例外がない限り、この句を使用することはお勧めできません。このパターンを使用すると、デバッグ、問題の診断がひどくなります。これは強力な機能です(必要な場合があります)が、危険です!

14
Pavel Stehule