gpt4 book ai didi

php - 能否使用 PDO 和 PostgreSQL 返回多个结果集?

转载 作者:可可西里 更新时间:2023-11-01 00:53:56 28 4
gpt4 key购买 nike

我想将多个查询分组到一个存在于 PostgreSQL 中的函数中。将使用 PDO 查询该函数。

函数是:

CREATE OR REPLACE FUNCTION "test_multipe_refcursor"() 
RETURNS SETOF refcursor AS $BODY$

DECLARE
parentRC refcursor;
childRC refcursor;

BEGIN

open parentRC FOR
SELECT * FROM parent;
RETURN NEXT parentRC;

open childRC FOR
SELECT * FROM child;
RETURN NEXT childRC;

RETURN;

END;$BODY$
LANGUAGE 'plpgsql' VOLATILE;

ALTER FUNCTION "test_multipe_refcursor"() OWNER TO postgres;

这是 PHP 代码。 “数据库”作为一个单例类,设置了通常的连接属性,没有什么特别的。

  $database = Database::load();
$sql = "select * from test_multipe_refcursor();";
$p = $database->query($sql);

$i = 1;
do
{
$this->set('set' . $i, $p->fetchAll(PDO::FETCH_ASSOC));
$i++;
} while ($p->nextRowset());

$p->closeCursor();

结果。

 PDOException: SQLSTATE[IM001]: Driver does not support this function: driver does not support multiple rowsets in xxxx.php on line 32

这似乎表明它不受支持,但话又说回来,我找不到准确定义支持的列表。

有没有人设法让它工作?

引用资料:

最佳答案

返回多个结果集的支持仍在 PostgreSQL todo list 上而且肯定打不到8.4。至于 setof refcursors 方法,您尝试执行的操作不起作用,因为该函数不返回多个行集 - 它返回一个行集的 refcursors。我不确定使用 refcursors 客户端是否有效,但我认为这不太可能,即使客户端-服务器协议(protocol)支持它,PDO 也不太可能有用于此的 API。

但是为什么要在一个查询中返回多个结果集呢?您始终可以单独进行查询。

关于php - 能否使用 PDO 和 PostgreSQL 返回多个结果集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/951628/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com