Stored procedures 通过Go/Golang使用ODBC的存储过程
我使用的是脑力劳动者提供的ODBC驱动程序。我使用的是通用ODBC语法,即使用“CALL”调用存储过程。这是我的密码: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
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
(Typefunc
)应该是(返回Typestring
,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非常确定我以前在自己的代码中看到过该错误:-)它似乎很熟悉。