gpt4 book ai didi

postgresql - 在 pl/proxy 中获取 refcursor

转载 作者:行者123 更新时间:2023-11-29 13:33:25 25 4
gpt4 key购买 nike

我正在使用 Postgresql 并具有将 refcursor 返回给客户端的简单函数:

CREATE OR REPLACE FUNCTION select_user(cur refcursor, m_id text)
RETURNS setof refcursor AS $$
BEGIN
OPEN $1 FOR SELECT * FROM public.users WHERE id=m_id;
RETURN NEXT $1;
END;
$$ LANGUAGE plpgsql;

我可以像这样获取数据:

SELECT select_user('cur','999999'); FETCH ALL in cur;

像这样返回 1 行:

username   email                id
999999 999999@somewhere.cm 999999

但现在的问题是,我在 Postgresql 中使用 pl/proxy在 pl/proxy server 中我写了这个函数:

CREATE OR REPLACE FUNCTION select_user(cur refcursor, m_type integer, m_hid text)
RETURNS setof refcursor AS $$
CLUSTER 'sqlcluster';
RUN ON select_db(m_hid);
$$ LANGUAGE plproxy;

从上面的函数它返回 refcursor,但我无法获取 refcursor使用此命令:

SELECT select_user('cur','999999'); FETCH ALL in cur;

返回错误:

SQL error:

ERROR: cursor "cur" does not exist

谁能解释一下这是什么问题?

最佳答案

PL/Proxy 函数在不同的数据库中运行,refcursor 在那里无效。您将不得不重新设计那部分代码。

关于postgresql - 在 pl/proxy 中获取 refcursor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18718640/

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