У меня есть таблица с именем rezultz с 1 строкой, содержащая только действительные SQL-запросы, такие как: CREATE TRIGGER ... Я пытаюсь выполнить их с помощью функции get_all_rezultz(), но она не кажется работа, любые идеи, почему?Выполнение строковых запросов из функции
CREATE OR REPLACE FUNCTION get_all_rezultz() RETURNS SETOF rezultz AS
$BODY$
DECLARE
r rezultz%rowtype;
BEGIN
FOR r IN
SELECT * FROM rezultz
LOOP
-- can do some processing here
RETURN QUERY EXECUTE r; -- return current row of SELECT
END LOOP;
RETURN;
END
$BODY$
LANGUAGE plpgsql;
SELECT * FROM get_all_rezultz();
Здесь ошибка я получаю:
NOTICE: identifier "CREATE TRIGGER userman_if_modified_trg AFTER INSERT OR UPDATE OR DELETE ON userman FOR EACH ROW EXECUTE PROCEDURE audit.if_modified_func(); " will be truncated to "CREATE TRIGGER userman_if_modified_trg AFTER INSERT OR UPDATE O"
CONTEXT: SQL statement "("CREATE TRIGGER userman_if_modified_trg AFTER INSERT OR UPDATE OR DELETE ON userman FOR EACH ROW EXECUTE PROCEDURE audit.if_modified_func(); ")"
PL/PgSQL функция get_all_rezultz() строка 10 на RETURN QUERY
ERROR: syntax error at or near ""CREATE TRIGGER userman_if_modified_trg AFTER INSERT OR UPDATE OR DELETE ON userman FOR EACH ROW EXECUTE PROCEDURE audit.if_modified_func(); ""
LINE 1: ("CREATE TRIGGER userman_if_modified_trg AFTER INSERT OR UPD...
^
QUERY: ("CREATE TRIGGER userman_if_modified_trg AFTER INSERT OR UPDATE OR DELETE ON userman FOR EACH ROW EXECUTE PROCEDURE audit.if_modified_func(); ")
CONTEXT: PL/pgSQL function get_all_rezultz() line 10 at RETURN QUERY
********** Ошибка **********
ERROR: syntax error at or near ""CREATE TRIGGER userman_if_modified_trg AFTER INSERT OR UPDATE OR DELETE ON userman FOR EACH ROW EXECUTE PROCEDURE audit.if_modified_func(); ""
SQL state: 42601
Context: PL/pgSQL function get_all_rezultz() line 10 at RETURN QUERY
Добро пожаловать в SO. Что значит «не работает»? Дает ошибку? Не дает ожидаемых результатов? –
Обновлено, где произошла ошибка – Aaron
Это не сработает. Какова фактическая проблема, которую вы пытаетесь решить с этим? Функция не может возвращать несколько результатов, и вы не можете запускать инструкцию DDL с помощью 'return query'. Вы должны сделать шаг назад и объяснить нам лежащую в основе _problem_ у вас. –