将使用 refcursor 的动态查询的输出保存到 table
Saving the output of a dynamic query that uses refcursor into a table
继续 ,其中创建并执行了使用 refcursor 的动态 SELECT 查询 - 我想问下列的:
我们从指定过程中获得的所需输出被输出到 DataOutput 中。
我想找到一种方法将数据存储到数据库中的新 table 中。
而不是直接的命令:
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
这比您之前的问题更容易解决,因为我们不会在这里遇到动态 return 类型的麻烦。您只需在将查询字符串传递给 EXECUTE
.
之前正确连接查询字符串
对于新table:
DO
$$
BEGIN
EXECUTE 'CREATE TABLE mydaughtertable AS ' || myresult('dkj_p_k27ac','enri');
END
$$;
其中 myresult(...)
return 是有效 SELECT
语句的文本。
添加到 现有的 table:
...
EXECUTE 'INSERT INTO TABLE mydaughtertable(<colum list>) '
|| myresult('dkj_p_k27ac','enri');
...
如果您知道查询的结果类型匹配table,您可以省略目标列的列表。
继续
而不是直接的命令:
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
这比您之前的问题更容易解决,因为我们不会在这里遇到动态 return 类型的麻烦。您只需在将查询字符串传递给 EXECUTE
.
对于新table:
DO
$$
BEGIN
EXECUTE 'CREATE TABLE mydaughtertable AS ' || myresult('dkj_p_k27ac','enri');
END
$$;
其中 myresult(...)
return 是有效 SELECT
语句的文本。
添加到 现有的 table:
...
EXECUTE 'INSERT INTO TABLE mydaughtertable(<colum list>) '
|| myresult('dkj_p_k27ac','enri');
...
如果您知道查询的结果类型匹配table,您可以省略目标列的列表。