PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Salvando a saída de uma consulta dinâmica que usa refcursor em uma tabela


Isso é resolvido mais facilmente do que sua pergunta anterior, porque não temos problemas com tipos de retorno dinâmicos aqui. Você só precisa concatenar a string de consulta corretamente antes de passá-la para EXECUTE .

Para uma nova tabela :
DO
$$
BEGIN
EXECUTE 'CREATE TABLE mydaughtertable AS ' || myresult('dkj_p_k27ac','enri');
END
$$;

Onde myresult(...) retorna o texto para um SELECT válido declaração.

Para adicionar a uma tabela existente :
...
EXECUTE 'INSERT INTO TABLE mydaughtertable(<colum list>) '
      || myresult('dkj_p_k27ac','enri');
...

Se você sabe o tipo de resultado da consulta corresponde à tabela, você pode omitir a lista de colunas de destino.