sql >> Base de Datos >  >> RDS >> PostgreSQL

Guardar el resultado de una consulta dinámica que usa refcursor en una tabla

Esto se resuelve más fácilmente que su pregunta anterior, porque aquí no nos metemos en problemas con los tipos de devolución dinámica. Solo necesita concatenar la cadena de consulta correctamente antes de pasarla a EXECUTE .

Para una tabla nueva :

DO
$$
BEGIN
EXECUTE 'CREATE TABLE mydaughtertable AS ' || myresult('dkj_p_k27ac','enri');
END
$$;

Donde myresult(...) devuelve el texto de un SELECT válido declaración.

Para agregar a una tabla existente :

...
EXECUTE 'INSERT INTO TABLE mydaughtertable(<colum list>) '
      || myresult('dkj_p_k27ac','enri');
...

Si sabes el tipo de resultado de la consulta coincide con la tabla, puede omitir la lista de columnas de destino.