PostgreSQL - 显示游标获取的数据

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


你的脚本在我的psql中运行良好。你是否特别在使用pgAdmin3时遇到了问题? - Chris Travers
是的,我认为这是特定于pgAdmin3的。如果必须的话,我会尝试在psql中运行我的脚本,谢谢。 - Evgeny
1个回答

5

您的基本问题是pg_admin无法显示多查询块的结果。

您需要做的是将每个语句按顺序作为单独的查询运行。

即:

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

然后它将按预期工作。


作为对此的跟进,新的“Azure数据工作室”将允许您返回多个结果集。 您现在可以设置这些类型的查询并一次执行。 - Damien Sawyer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接