我试图弄清楚在 go 的内置数据库/sql 包中使用命名参数的模式是什么。我查看了 oracle 驱动程序,但它似乎只是 C 库的包装器。人们是否以优雅的方式解决了这个问题?到目前为止,我只是通过将{0},{1}作为单元测试中的参数来解决这个问题,但是能够将它们正常用作 amap[string]interface{}或其他东西肯定会很好。有没有人有一个似乎惯用的想法或实现?作为参考,这里是一个测试:db := testConn()stmt, err := db.Prepare("return {0} as int1, {1} as int2")if err != nil { t.Fatal(err)}rows, err := stmt.Query(123, 456)if err != nil { t.Fatal(err)}rows.Next()var test intvar test2 interr = rows.Scan(&test, &test2)if err != nil { t.Fatal(err)}if test != 123 { t.Fatal("test != 123;", test)}if test2 != 456 { t.Fatal("test2 != 456;", test2)}我正在做的Query是:func (stmt *cypherStmt) Query(args []driver.Value) (driver.Rows, error) { cyphReq := cypherRequest{ Query: stmt.query, } if len(args) > 0 { cyphReq.Params = make(map[string]interface{}) } for idx, e := range args { cyphReq.Params[strconv.Itoa(idx)] = e }...
3 回答
- 3 回答
- 0 关注
- 215 浏览
添加回答
举报
0/150
提交
取消