使用go和InstantClient从存储过程访问OUT参数(t_cursor类型)



我正在处理一个Oracle数据库,通过InstantClient(版本11(从go连接(https://github.com/mattn/go-oci8)。我需要能够加载此对象并浏览结果。。。t_cursor输出参数。

我尝试了很多策略,我知道如何将函数参数映射到go结构,但我不知道如何使用t_cursor类型,因为它似乎没有在InstantClient 中实现

存储过程示例

create or replace procedure EXAMPLE(a IN NUMBER, b IN NUMBER, c OUT T_CURSOR) AS BEGIN

[编辑]我们还尝试从代码中执行SQL块,以尝试处理第三个参数。

如果你添加类似的东西

declare
c t_cursor;
begin
EXAMPLE(:1, :2, c)
end

那么我不知道如何让块返回包含光标的结果集。

declare
c t_cursor;
begin
EXAMPLE(:1, :2, c)
select 1, c from dual
end

返回该选择结果的整个块将是理想的,但是oracle块不会返回afaik的结果集。

有谁能帮上忙吗?

非常感谢

这可以用驱动程序完成https://github.com/rana/ora相反

*Rset可以在使用接受OUT SYS_REFCURSOR 的存储过程进行准备时传递给Stmt.Exe

README.me甚至有这个确切的例子。

注意事项:

  1. 尚不清楚是否可以使用数据库/sql接口,或者您仅限于特定于lib的API
  2. Instant Client仅限于12.1.0.1.0版本

最新更新