web-dev-qa-db-fra.com

Catch all error psql exception de fonction

J'écris une fonction avec une exception de capture et d'ignorance. Je veux attraper toutes les exceptions et simplement l'ignorer. Existe-t-il de toute façon pour attraper toutes les exceptions et pas individuellement?

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;

Au lieu d'une exception unique, cela devrait être n'importe quelle exception ...

14
Pavan Ebbadi

Vous pouvez utiliser EXCEPTION WHEN OTHERS clause:

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

Sans exception, l'utilisation de cette clause n'est pas une bonne idée. Le débogage et les diagnostics de problèmes peuvent être terribles lorsque vous utilisez ce modèle. C'est une caractéristique forte (parfois nécessaire), mais dangereuse!

14
Pavel Stehule