現在做的程式里需要呼叫資料庫的存盤程序,我操作資料庫用的是xorm,呼叫的存盤程序有3個輸入引數(a,b,c),2個輸出引數(out_1,out_2),我現在需要這兩個輸出引數的值,但是查了網上的方法沒有成功實作。網上看到的方法有下面兩種:
1. res, err := engine.Exec(sql, 引數……) ——這種方法試過了,但是exec回傳的res里可以獲取到LastInsertId()和RowsAffected()兩個結果,但是并不是我想要的
2. queryString, err := MySQL().QueryString("call user.query_student(?,?,@1,@2,@3,@4,@5,@6)", "Jerry", 1)
if err != nil {
log.Println("err:", err)
}
for k, v := range queryString[0] {
fmt.Printf("columns:%v - value:%v\n", k, v)
}
——這種方法我也試過了,但是回傳的queryString一直是nil,根本沒法再去獲取k,v
今天又試了下,發現方法2在存盤程序中在沒有操作資料庫,只進行查詢的情況下是可以使用的,但是我在程序中需要執行添加記錄等操作,只要在程序中加了insert into陳述句后,回傳的queryString就一直是nil了。
請教下大神們有沒有什么其他有用的方法?
PS:存盤程序里最后使用的有SELECT out_1,out_2;
uj5u.com熱心網友回復:
改原始碼試試?改到獲取你想要的uj5u.com熱心網友回復:
rows, err := engine.DB().DB.Query("存盤程序",引數)defer func() {
err := rows.Close()
if err != nil {
...
}
}()
rows.Next()
//結果
err = rows.Scan(&x, &y)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/123833.html
標籤:go語言
