3

カーソルのセットを返す関数を正常に作成しました。つまり、次のようになります。

CREATE OR REPLACE FUNCTION select_multiple(refcursor, refcursor)
  RETURNS SETOF refcursor AS
$BODY$
BEGIN
  OPEN $1 FOR SELECT testtemptable.myid FROM testtemptable;   -- Open the first cursor
  RETURN NEXT $1;                                                                              -- Return the cursor to the caller

  OPEN $2 FOR SELECT testtemptable.name FROM testtemptable;   -- Open the second cursor
  RETURN NEXT $2;                                                                              -- Return the cursor to the caller
END;
$BODY$
  LANGUAGE plpgsql VOLATILE

関数を呼び出し、各カーソルが5行を返すことを期待しています。これは、発生しているように見えます。これが私がそれを呼ぶために何をするかです:

BEGIN;
select select_multiple('a', 'b');
FETCH ALL IN "a";
FETCH ALL IN "b";
COMMIT;

しかし、私の質問は、データを「視覚化」して、何が返されるかを確認するにはどうすればよいかということです。[データ出力]タブには何も表示されず、[メッセージ]タブには何も表示されません

Query result with 2 rows discarded.
Query result with 5 rows discarded.
Query result with 5 rows discarded.
Query returned successfully with no result in 11 ms.

結果はどこで破棄されましたか?代わりに[データ出力]タブに表示するにはどうすればよいですか?PostgreSQLバージョン9.1

4

1 に答える 1

5

基本的な問題は、pg_adminがマルチクエリブロックの結果を表示しないことです。

あなたがする必要があるのは、別々のクエリとして順番に各ステートメントを実行することです。

つまり

Begin; (run)
SELECT * FROM .... ; (run)
FETCH ALL FROM "a"; (run);
etc.

その後、期待どおりに機能します。

于 2013-03-20T09:40:36.893 に答える