Выполнить запрос, указанный текстом в ячейке таблицы
Всем привет! Может кто сможет помочь с вопросом, я уже весь гугел и стэковерфлоу перерыла, может формулирую неправильно..
В общем, допустим у меня в ячейке таблицы имеется текст с запросом:
При этом, неизвестно, сколько столбцов выдаст запрос и какого типа будут данные.
Возможно ли выполнить данный запрос, не используя процедурный SQL?
И если невозможно, то как это сделать с помощью процедурного pl/pgsql?
Я пока смогла найти/придумать только такой способ. В процедурном не сильна :(
-- создаем функцию, которая выполняет запрос на основе переданного ей текста:
CREATE OR REPLACE FUNCTION apply_query(query TEXT)
RETURNS void AS $$
BEGIN
EXECUTE query;
END;
$$LANGUAGE plpgsql;
-- т.к. все должно выполняться автоматически, создадим еще одну функцию qr(),
-- которая результатом выдает текст нужного запроса из ячейки (код не буду приводить):
qr() => 'SELECT * FROM a'
-- создаем представление с помощью функций и запрашиваем результат:
SELECT apply_query('CREATE OR REPLACE VIEW result AS ' || qr());
SELECT * FROM "result";
С этим кодом вопрос решается, но насколько оптимально данное решение, можно ли составить более красивый код?