PostgreSQL中与Oracle的VALUE_ERROR等效的PL / pgSQL异常是什么?

时间:2018-08-21 08:45:19

标签: postgresql exception-handling plpgsql postgresql-9.4

我正在编写一个函数,该函数具有与PostgreSQL中Oracle中的VALUE_ERROR相等的异常。 PostgreSQL中有替代品吗?

CREATE OR REPLACE FUNCTION TEST (a TEXT, b TEXT)
RETURNS INTEGER AS $SUCCESS$
DECLARE SUCCESS INTEGER;
BEGIN
    SUCCESS = 0;
    BEGIN
        UPDATE TABLE_TEST
        SET *****
        WHERE ***;
        SUCCESS = 1;
    EXCEPTION
        WHEN VALUE_ERROR /* throwing error as there is no value-error in postgres */
        SUCCESS = 0;

        UPDATE TABLE_TEST
        SET *****
        WHERE ***;
        SUCCESS = 2;

       WHEN OTHERS THEN
        SUCCESS = 3;

        UPDATE TABLE_TEST
        SET *****
        WHERE ***;
        SUCCESS = 4;
    END;

   RETURN SUCCESS;
END;
$SUCCESS$ LANGUAGE plpgsql;

代替value_error异常,它应该与PostgreSQL中的等效。

1 个答案:

答案 0 :(得分:0)

我会使用data_exception,请参阅the documentation

这实际上是一类异常,其中包含所有可能导致数据出错的异常,但我想这是最好的替代方法。