如何使用 golang ("github.com/sijms/go-ora/v2")

我在 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中的说明进行操作并得到了这个

http://img2.mukewang.com/63b3c83e0001176410840601.jpg

http://img.mukewang.com/63b3c8470001ec5813170146.jpg

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



浮云间
浏览 183回答 1
1回答

偶然的你

您还需要将out 参数传递给过程。statement := `begin PKG_TEST.PROC_GET_DUAL(:1); end;` _, err := db.Exec(statement, sql.Out{Dest: &cursor})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go