So führen Sie den PostgreSQL RAISE-Befehl dynamisch aus

Wie löse ich einen Fehler in der PostgreSQL-SQL-Anweisung aus, wenn eine Bedingung erfüllt ist?
Ich habe den folgenden Code ausprobiert, aber einen Fehler erhalten.

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

In der realen AnwendungTRUE wird durch eine Bedingung ersetzt.

Aktualisieren

Ich habe versucht, die Antwort so zu erweitern, dass Ausnahmemeldungsparameter übergeben werden. Versuchte Code unten, bekam aber Syntaxfehler. Wie werden Nachrichtenparameter übergeben?

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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage