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

继续到a previous case,其中创建了一个使用refcursor的动态SELECT查询,然后执行了该查询-我想问以下问题:
我们从指示过程中获得的期望输出被输出到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') 

但是此脚本不正确,并出现以下错误:

06002

最佳答案
这个问题比您之前的问题更容易解决,因为我们在这里不会遇到动态返回类型的麻烦.您只需要正确地连接查询字符串,然后将其传递给EXECUTE.

对于新表:

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

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

要添加到现有表:

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

如果您知道查询的结果类型与表匹配,则可以省略目标列的列表.

转载注明原文:postgresql-将使用refcursor的动态查询的输出保存到表中 - 代码日志