5

私は以下を返す関数some_func()を持っていますrefcursor

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

この関数をコンソールから呼び出して、返されたカーソルから結果セットを表示したいと思います。Oracleでは次のように書きます。

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

refcursorを返すように記述されたpostgres関数があるとしましょう。

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 に答える