什么 PL/pgSQL 异常等同于 PostgreSQL 中 Oracle 的 VALUE_ERROR?
What PL/pgSQL exception is the equivalent for Oracle's VALUE_ERROR in PostgreSQL?
我正在编写一个函数,异常等同于在 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 中的等效项。
我会使用 data_exception
,参见 the documentation。
这实际上是一个 class 异常,涵盖了数据可能出错的所有内容,但我认为它是最好的替代品。
我正在编写一个函数,异常等同于在 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 中的等效项。
我会使用 data_exception
,参见 the documentation。
这实际上是一个 class 异常,涵盖了数据可能出错的所有内容,但我认为它是最好的替代品。