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 ); 

Respuestas a la pregunta(1)

Su respuesta a la pregunta