登录
首页 >  Golang >  Go问答

使用 golang 查询 oracle 数据库并获取 REFCURSOR 输出的方法 (使用 "github.com/sijms/go-ora/v2" 包)

来源:stackoverflow

时间:2024-02-11 09:48:22 293浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《使用 golang 查询 oracle 数据库并获取 REFCURSOR 输出的方法 (使用 "github.com/sijms/go-ora/v2" 包)》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

我在oracle中有一个包

create or replace package pkg_test is
    type refcursor is ref cursor;
    procedure proc_get_dual(p_cur out refcursor);
end pkg_test;
create or replace package body pkg_test is
    procedure proc_get_dual(
        p_cur out refcursor)
        is
    begin
        open p_cur for
            select * from dual;
    end proc_get_dual;
end pkg_test;

我使用golang(“github.com/sijms/go-ora/v2”)连接oracle并ping成功。我称包为

var cursor go_ora.RefCursor
fmt.Println(db.Ping())
statement := `begin :x := PKG_TEST.PROC_GET_DUAL(); end;`
_, err := db.Exec(statement, sql.Out{Dest: &cursor})
//check errors

defer cursor.Close()
rows, err := cursor.Query()
// check for error

var (
    var1 string
)
for rows.Next_() {
    err = rows.Scan(&var1)
    // check for error
    fmt.Println(var1)
}

我按照 https://github.com/sijms/go-ora/blob/master/readme.md 中的说明操作并得到了这个

感谢您的帮助,并对我的英语感到抱歉,因为英语不是我的母语


正确答案


您还需要将输出参数传递给过程。

statement := `begin PKG_TEST.PROC_GET_DUAL(:1); end;`
_, err := db.Exec(statement, sql.Out{Dest: &cursor})

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《使用 golang 查询 oracle 数据库并获取 REFCURSOR 输出的方法 (使用 "github.com/sijms/go-ora/v2" 包)》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>