Как динамически выполнять команду PostgreSQL RAISE
Как вызвать ошибку в SQL-выражении PostgreSQL, если выполняется какое-то условие?
Я попробовал код ниже, но получил ошибку.
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
заменяется некоторым условием.
Update
Я попытался расширить ответ, чтобы передать параметры сообщения об исключении. Попробовал код ниже, но получил синтаксическую ошибку. Как передать параметры сообщения?
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 );