gpt4 book ai didi

stored-procedures - 通过 Go/Golang 使用 ODBC 的存储过程

转载 作者:IT王子 更新时间:2023-10-29 02:06:13 26 4
gpt4 key购买 nike

我正在使用 The Brainman 的 ODBC 驱动程序。我正在使用通用的 ODBC 语法,即使用“CALL”来调用存储过程。这是我的代码:

stmt, stmtErr := db.Prepare("CALL RecordClick (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")
if stmtErr != nil {
fmt.Printf("\nstmtErr: %s", stmtErr)
}
defer stmt.Close()

var aclickid int
stmtRows, stmtRowsErr := stmt.Query(xaid, subtag, r.Referer, requestUserAgent, requestIP, ip, ua, title, description, displayurl, clickUrl, kw, rpc, exid)
if stmtRowsErr != nil {
fmt.Printf("\nstmtRowsErr: %s", stmtRowsErr)
}
for stmtRows.Next() {
stmtRows.Scan(&aclickid)
}

当我运行它时,出现以下错误:

stmtRowsErr: sql: converting Exec argument #2's type: unsupported type func() string, a func

我真的不明白我在这里做错了什么。我已经尝试过在 CALL XXX (?, ?, ?) 部分周围使用和不使用花括号,但它仍然无法正常工作。有什么想法吗?

谢谢。

最佳答案

我的猜测是 stmt.Query 中的 r.Referer (Type func) 应该是 r.Referer() (返回类型 string,来自 net/http )。

所以这一行应该是:

stmtRows, stmtRowsErr := stmt.Query(xaid, subtag, r.Referer(), requestUserAgent, requestIP, ip, ua, title, description, displayurl, clickUrl, kw, rpc, exid)

该错误来自 Line #37 of convert.go in the database/sql package .

它告诉您 SQL 查询的参数 #2(零索引)的类型转换无法转换为 SQL 引擎期望的类型(特别是函数 driver.DefaultParameterConverter.ConvertValue(arg ) 失败。)

检查查询中每个变量的类型,例如:

fmt.Printf("%T %T %T %T %T %T %T %T %T %T %T %T %T %T", xaid, subtag, r.Referer, requestUserAgent, requestIP, ip, ua, title, description, displayurl, clickUrl, kw, rpc, exid)

并查看其中是否有任何意外或不正确。

关于stored-procedures - 通过 Go/Golang 使用 ODBC 的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19804636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com