Jak dynamicznie wykonywać komendę PostgreSQL RAISE
Jak podnieść błąd z instrukcji SQL PostgreSQL, jeśli spełniony jest jakiś warunek?
Próbowałem kodu poniżej, ale dostałem błąd.
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
W prawdziwym zastosowaniuTRUE
zostaje zastąpiony przez jakiś warunek.
Aktualizacja
Próbowałem rozszerzyć odpowiedź, aby przekazać parametry komunikatu wyjątku. Wypróbowano kod poniżej, ale wystąpił błąd składniowy. Jak przekazać parametry wiadomości?
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 );