我不明白为什么我的INSERT查询不能正确处理参数,但可以很好地处理其中的直接值。
戈朗,研究生。
此代码运行良好:
fmt.Printf("connected to %sn", ec.DBName)
q := `
INSERT INTO some_table (name, num) VALUES ('sample',20)
EXCEPT
SELECT name, num FROM some_table;`
_, err = db.Query(q)
if err != nil {
fmt.Println(err)
}
但这一次引发了一个错误:
fmt.Printf("connected to %sn", ec.DBName)
q := `
INSERT INTO some_table (name, num) VALUES ($1,$2)
EXCEPT
SELECT name, num FROM some_table;`
_, err = db.Query(q, "sample", 20)
if err != nil {
fmt.Println(err)
}
错误是";pq:EXCEPT类型text和integer不能匹配";
您可以将这两个值都作为字符串发送,并尝试通过sql将它们强制转换为所需的类型。类似这样的东西-
q := `
INSERT INTO some_table (name, num)
VALUES (cast($1 as text), cast($2 as int))
EXCEPT
SELECT name, num FROM some_table;`
_, err = db.Query(q, "sample", "20")
if err != nil {
fmt.Println(err)
}