Использование выполнения в подзапросе в postgresql

Я создаю динамический запрос в своей функции, из которого мне нужно извлечь данные. теперь я хочу выполнить этот запрос.

что-то вроде этого:

declare
df_id varchar;
BEGIN
/*creating dynamic query in run time and saving it in df_id in string format
say df_id='select col from schema.table_name**'*/
CREATE TEMP TABLE temp_table ON COMMIT DROP AS
    execute df_id;

Как я могу это сделать? Кроме того, есть ли другой способ выполнить запрос в строковой переменной и сохранить его во временной таблице?


person Vishal D    schedule 04.05.2018    source источник


Ответы (1)


Вам нужно включить CREATE TABLE в свой динамический SQL.

Предполагая, что переменная df_id уже содержит оператор SELECT, вы можете сделать что-то вроде этого:

df_id := 'CREATE TEMP TABLE temp_table ON COMMIT DROP AS '||df_id;
execute df_id;
person a_horse_with_no_name    schedule 04.05.2018
comment
Спасибо, это сработало. Могу ли я также хранить эти данные в массиве? если да Как? потому что в некоторых случаях мне не разрешено использовать временную таблицу. - person Vishal D; 04.05.2018
comment
@VishalD: да, это возможно, но для этого вам следует задать новый вопрос. Не расширяйте рамки вашего вопроса, когда у вас есть ответ - person a_horse_with_no_name; 04.05.2018