POSTGRES:选择从函数返回的引用的查询

Posted

技术标签:

【中文标题】POSTGRES:选择从函数返回的引用的查询【英文标题】:POSTGRES: Select query on a refcursor returned from a function 【发布时间】:2014-10-02 22:06:32 【问题描述】:

我有一个 POSTGRES 函数,它返回一个 refcursor 作为输出。打印 refcursor 会显示类似这样的输出:

A     B
==========
1    dog
2    cat
3    tiger

我的问题是:

我怎样才能在这个 refcursor 之上执行查询? 比如:

select A from (function_returning_refcursor());

【问题讨论】:

is this relevant? @gloomy.penguin 该链接是否建议单独创建一个类型并返回它而不是 refcursor?如果是这样,我不想那样做。 这非常不清楚。每个 refcursor 的查询是什么?你期望“A”是什么?你期望什么输出? 我已经把上面refcursor的内容贴出来了。假设 refcursor 由一个初始查询填充,该查询在联合之后从几个表中选择了所有内容。输出看起来像上面那样。现在,我尝试从上面的输出中只选择一个特定的列,即 A。A 的值已显示为整数。 【参考方案1】:

您将需要另一个函数,该函数使用 refcursor 并对光标内容执行任何您想要的操作。例如:

select f2(curs) from function_returning_refcursor() curs;

【讨论】:

感谢您的回复。你能告诉我函数 f2 将如何对 ref 游标进行查询吗?这基本上是我不明白的,是我的问题。 @M10TheMist PL/PgSQL 文档涵盖了从游标获取:postgresql.org/docs/current/static/plpgsql-cursors.html。注意你也可以FETCHSQL级别的结果:postgresql.org/docs/current/static/sql-fetch.html

以上是关于POSTGRES:选择从函数返回的引用的查询的主要内容,如果未能解决你的问题,请参考以下文章

如何插入选择查询的结果(如果不返回任何行则默认)作为 Postgres 函数的一部分?

在 postgres 选择中,将列子查询作为数组返回?

从 Postgres 函数返回数据

从 Postgres 中的表函数返回多行的最简单方法是啥?

Postgres 函数不返回任何结果,但是当相同的查询在函数之外返回结果时

postgres 查询返回记录集的函数