我在 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中的说明进行操作并得到了这个
谢谢你的帮助,对不起我的英语,因为英语不是我的母语
偶然的你
相关分类