Como executar o comando RAISE do PostgreSQL dinamicamente
Como aumentar o erro da instrução SQL do PostgreSQL se alguma condição for atendida?
Eu tentei o código abaixo, mas recebi um erro.
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
Na aplicação realTRUE
é substituído por alguma condição.
Atualizar
Eu tentei estender a resposta para passar parâmetros de mensagem de exceção. Tentei o código abaixo, mas recebi um erro de sintaxe. Como passar parâmetros de mensagem?
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 );