ALL 我有一个postgresql函数,所以这个:
SELECT distinct id, id FROM XX WHERE id LIKE '01%%' GROUP BY id
-- ^^
我想知道,如何在我的c代码中使用libpq访问函数 - query_callouts并获取param io_cursor_ref和opstatus和errtext?
答案 0 :(得分:0)
它就像任何其他查询一样。
SELECT * FROM query_callouts('cursorname', 4, 'msg')
我怀疑,如果不是所有参数都应该是OUT
参数而不是INOUT
参数。您至少不能使用errtext
的输入值。
答案 1 :(得分:0)
您可以像执行任何查询一样调用该函数:
select * from query_callouts('mycur', 0, '');
io_cursor_ref | opstatus | errtext
---------------+----------+---------
mycur | 0 |
(1 row)
如果发生异常, opstatus
和errtext
将设置为适当的值。
io_cursor_ref
包含您传递给函数的名称。
在内部,refcursor值只是所谓的字符串名称 包含游标的活动查询的门户网站。这个名字可以 传递,分配给其他refcursor变量,等等, 不打扰门户网站。
注意,您只能在事务中使用refcursor。
在交易结束时隐式关闭所有门户网站。因此a refcursor值仅用于引用打开的游标,直到 交易结束。
您可以使用显式交易:
begin;
select * from query_callouts('mycur', 0, '');
fetch all in mycur;
-- save or show the query result
-- and finally
commit;
或在函数中使用mycur
。
报价来自the documentation。