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

Stored procedures 通过Go/Golang使用ODBC的存储过程,stored-procedures,go,odbc,unixodbc,Stored Procedures,Go,Odbc,Unixodbc,我使用的是脑力劳动者提供的ODBC驱动程序。我使用的是通用ODBC语法,即使用“CALL”调用存储过程。这是我的密码: stmt, stmtErr := db.Prepare("CALL RecordClick (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") if stmtErr != nil { fmt.Printf("\nstmtErr: %s", stmtErr) } defer stmt.Close() var aclickid int

我使用的是脑力劳动者提供的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
)应该是(返回Type
string
,From)

所以这行应该是:

stmtRows, stmtRowsErr := stmt.Query(xaid, subtag, r.Referer(), requestUserAgent, requestIP, ip, ua, title, description, displayurl, clickUrl, kw, rpc, exid)
这个错误来自于

它告诉您,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)

然后查看其中是否有意外或错误。

错误消息看起来不完整,您可以发布整个消息吗?@AllisonA非常确定我以前在自己的代码中看到过该错误:-)它似乎很熟悉。