微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用go和InstantClient

如何解决使用go和InstantClient

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

我尝试了很多策略,我知道如何将函数参数映射到结构上,但是我不知道如何使用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,c)
  select 1,c from dual
end

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

有人可以帮忙吗?

非常感谢您

解决方法

它可以改为使用驱动程序https://github.com/rana/ora完成。

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

README.me甚至有确切的示例。

注意事项:

  1. 目前尚不清楚是可以使用数据库/ sql接口,还是限于特定于lib的API。
  2. Instant Client受限于从12.1.0.1.0开始的版本。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。