Como ejecutar el comando RAISE de PostgreSQL dinámicamente
¿Cómo generar un error desde la declaración SQL de PostgreSQL si se cumple alguna condición?
Intenté el código de abajo, pero tengo un error.
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
En aplicacion realTRUE
Es reemplazado por alguna condición.
Actualizar
Intenté extender la respuesta para pasar los parámetros del mensaje de excepción. Se intentó el código a continuación pero se obtuvo un error de sintaxis. ¿Cómo pasar parámetros de mensaje?
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 );