如何使用Golang在oracle包中获取输出REFCURSOR(“githorb.com/sijms/go-ora/v2”)

wko9yo5t  于 2022-09-18  发布在  Java
关注(0)|答案(1)|浏览(160)

我有一个甲骨文的包裹

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(“githorb.com/sijms/go-ora/v2”)将甲骨文和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中的说明得到了这个

谢谢你的帮助,对不起我的英语,因为英语不是我的母语

o2g1uqev

o2g1uqev1#

您还需要将out参数传递给该过程。

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

相关问题