Postgresql 将使用refcursor的动态查询的输出保存到表中

Postgresql 将使用refcursor的动态查询的输出保存到表中,postgresql,plpgsql,dynamic-sql,create-table,Postgresql,Plpgsql,Dynamic Sql,Create Table,在继续中,创建了一个使用refcursor的动态选择查询,然后执行该查询-我想问以下问题: 我们从指定的过程中获得的所需输出被输出到DataOutput中。 我想找到一种方法将数据存储到数据库中的一个新表中 代替“直接前进”命令: CREATE TABLE mydaughtertable AS SELECT enrich_d_dkj_p_k27ac,enrich_lr_dkj_p_k27ac,enrich_r_dkj_p_k27ac FROM dkj_p_k27ac 我们的想法是运行类似于:

在继续中,创建了一个使用refcursor的动态选择查询,然后执行该查询-我想问以下问题: 我们从指定的过程中获得的所需输出被输出到DataOutput中。 我想找到一种方法将数据存储到数据库中的一个新表中

代替“直接前进”命令:

CREATE TABLE mydaughtertable AS
SELECT enrich_d_dkj_p_k27ac,enrich_lr_dkj_p_k27ac,enrich_r_dkj_p_k27ac
FROM dkj_p_k27ac
我们的想法是运行类似于:

CREATE TABLE mydaughtertable AS myresult('dkj_p_k27ac','enri') 
但此脚本不正确,并出现以下错误:


这比前面的问题更容易解决,因为这里的动态返回类型没有问题。在将查询字符串传递给之前,只需正确连接查询字符串

对于新表:

其中
myresult(…)
返回有效
SELECT
语句的文本

要添加到现有表,请执行以下操作:

。。。
执行“插入到表mydaughtertable()中”
||myresult('dkj_p_k27ac','enri');
...
如果知道查询的结果类型与表匹配,则可以省略目标列列表。

Wow!!非常感谢@Erwin Brandstetter
ERROR:  syntax error at or near "myresult"
LINE 1: CREATE TABLE mydaughtertable AS myresult('dkj_p_k27ac','enri...
                                        ^
********** Error **********

ERROR: syntax error at or near "myresult"
SQL state: 42601
Character: 33
DO
$$
BEGIN
EXECUTE 'CREATE TABLE mydaughtertable AS ' || myresult('dkj_p_k27ac','enri');
END
$$;
...
EXECUTE 'INSERT INTO TABLE mydaughtertable(<colum list>) '
      || myresult('dkj_p_k27ac','enri');
...