我有一个 SQL 查询需要进行变量替换,以更好地消耗我的go-kit服务。
我有dep
和org
作为用户输入,它们是我的 REST 服务的一部分,例如:dep = 'abc'
和org ='def'
。
我尝试了几种方法:
rows, err := db.Query(
"select name from table where department='&dep' and organisation='&org'",
)
并且:
rows, err := db.Query(
"select name from table where department=? and organisation=?", dep , org,
)
这导致出现错误:sql: statement expects 0 inputs; got 2
只有硬编码的值可以工作,替换失败。
我在 Oracle 博客中没有找到太多关于此的帮助,想知道是否有任何方法可以解决这个问题。
db.Query()
或db.Prepare()
与stmt.Exec()
。但是,db.Query()
不仅返回错误,请问你的驱动程序是什么?请提供一个包含db
变量创建的代码示例。参考:https://golang.org/pkg/database/sql/#DB.Query - Rodrigo Brito:N
(https://github.com/mattn/go-oci8/blob/master/oci8Sql_test.go#L1149),其中N
是参数的位置。因此,在您的情况下,应该像这样工作:db.Query("select name from table where department = :1 and organisation = :2", dep, org)
。 - mkopriva