Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 从获取所有行创建视图(调用返回光标的函数)_Postgresql - Fatal编程技术网

Postgresql 从获取所有行创建视图(调用返回光标的函数)

Postgresql 从获取所有行创建视图(调用返回光标的函数),postgresql,Postgresql,在postgreSQL中,我成功地创建了一个函数,该函数返回一个refcursor,在第二步中,所有行都可以被提取 我想用函数返回的记录创建一个视图,但我不知道如何实现(如果有的话),因为SELECT语句只返回光标,而不返回记录。需要使用fetch ALL FROM获取这些文件 这就是功能(基本上是对中所述内容的修改): 我通过执行以下命令获取数据: BEGIN; SELECT do_cross_cursor(); FETCH ALL FROM result; END; 有一种方法可以让从结果

在postgreSQL中,我成功地创建了一个函数,该函数返回一个refcursor,在第二步中,所有行都可以被提取

我想用函数返回的记录创建一个视图,但我不知道如何实现(如果有的话),因为
SELECT
语句只返回光标,而不返回记录。需要使用
fetch ALL FROM
获取这些文件

这就是功能(基本上是对中所述内容的修改):

我通过执行以下命令获取数据:

BEGIN;
SELECT do_cross_cursor();
FETCH ALL FROM result;
END;

有一种方法可以让
从结果中获取所有信息流到视图中?

回答您的问题:否。视图需要定义所有列,您不能将“获取”放入视图定义中。但你可以解决这个问题。smth类似:

select DISTINCT 
pk, jahrmonat,count(1) over (partition by pk,jahrmonat), SUM(wert_monat_kum) AS Total 
FROM susa2

应该在垂直方向上为您提供相同的数据,因此您可以
交叉表
将其转换为您的数据集。

回答您的问题:否。视图需要定义所有列,并且您不能将fetch放在视图定义中。但你可以解决这个问题。smth类似:

select DISTINCT 
pk, jahrmonat,count(1) over (partition by pk,jahrmonat), SUM(wert_monat_kum) AS Total 
FROM susa2

应该在垂直方向上给您相同的数据,所以您可以
交叉表
将其转换为数据集。

我很高兴您不能这样做。结果视图的列数是可变的/动态的,基于“交叉”的内容和表中特定交叉字段的数据,因此从本质上讲,结果数据集具有动态模式。对于光标来说很好,而对于视图来说则不然。我很高兴你不能这么做。结果视图的列数是可变的/动态的,基于“交叉”的内容和表中特定交叉字段的数据,因此从本质上讲,结果数据集具有动态模式。对于光标来说很好,而对于视图来说则不然。谢谢你的回答。我以前一直试图通过
交叉表
来实现我想要的结果,但同样的问题是,数据透视列的数量是动态的。也许我得稍微考虑一下我的应用程序/sql设计。谢谢你的回答。我以前一直试图通过
交叉表
来实现我想要的结果,但同样的问题是,数据透视列的数量是动态的。也许我必须稍微考虑一下我的应用程序/sql设计。