gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 13:29:09 26 4
gpt4 key购买 nike

继续a previous case ,其中创建并执行了一个动态 SELECT 查询 that uses 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') 

但是这个脚本是不正确的,并给出了以下错误:

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

最佳答案

这比您之前的问题更容易解决,因为我们不会在这里遇到动态返回类型的麻烦。您只需要在将查询字符串传递给 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 的动态查询的输出保存到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27831796/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com