【发布时间】:2012-08-08 15:38:02
【问题描述】:
如果满足某些条件,如何从 PostgreSQL SQL 语句中引发错误?
我尝试了下面的代码,但出现错误。
CREATE OR REPLACE FUNCTION "exec"(text)
RETURNS text AS
$BODY$
BEGIN
EXECUTE $1;
RETURN $1;
END;
$BODY$
LANGUAGE plpgsql VOLATILE;
-- ERROR: syntax error at or near "raise"
-- LINE 1: raise 'test'
SELECT exec('raise ''test'' ') WHERE TRUE
在实际应用中,TRUE 被某些条件替换。
更新
我尝试扩展答案以传递异常消息参数。 尝试了下面的代码,但出现语法错误。 如何传递消息参数?
CREATE OR REPLACE FUNCTION exec(text, variadic )
RETURNS void LANGUAGE plpgsql AS
$BODY$
BEGIN
RAISE EXCEPTION $1, $2;
END;
$BODY$;
SELECT exec('Exception Param1=% Param2=%', 'param1', 2 );
【问题讨论】:
-
转发 PostgreSQL 邮件列表消息 archives.postgresql.org/message-id/… 。安德鲁斯,请不要在这两个地方发帖而不说你已经这样做了。发布到 Pg 列表时链接到 SO 文章。
标签: postgresql exception-handling plpgsql