问题描述
我正在处理一个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甚至有确切的示例。
注意事项:
- 目前尚不清楚是可以使用数据库/ sql接口,还是限于特定于lib的API。
- Instant Client受限于从12.1.0.1.0开始的版本。