5

我有一个返回的函数 some_func() refcursor

CREATE OR REPLACE FUNCTION some_func() RETURNS refcursor AS (...)

我想从控制台调用这个函数并从它返回的光标中显示结果集。在甲骨文我会写:

SELECT * FROM TABLE(some_func());

与 PosgreSQL 上的构造等效的是什么?

4

2 回答 2

4

refcursor 由其名称引用,可以是自动生成的,也可以由您选择。该文档的此页面为每个示例提供了一个示例。

要从 refcursor 获取结果,您必须具有游标的名称。如果生成的名称类似于<unnamed portal 1>". 然后您可以:

FETCH ALL FROM "<unnamed portal 1>";

游标名称作为结果从函数返回refcursor,因此您可以从那里获取它。

于 2012-06-21T11:05:27.650 回答
0

假设您有一个 postgres 函数以返回 refcursor 的方式编写;

CREATE OR REPLACE FUNCTION "com.mkindika"."myfunction" ("refcursor", other input  parameters) RETURNS "pg_catalog"."refcursor" AS 
$body$
DECLARE

---- query

END;
$body$
LANGUAGE 'plpgsql' STABLE CALLED ON NULL INPUT SECURITY INVOKER;

如果要打印 refcursor,可以使用以下代码行;

BEGIN;
SELECT "com.mkindika"."myfunction" ("refcursor",other input parameters);
FETCH ALL IN "refcursor";
于 2014-05-13T09:27:15.963 回答