moe*_*sef 5 sql postgresql prepared-statement go
我正在尝试使用 Golang sqlx 库创建一个准备好的语句。我想让表名是一个bindVar
stmt, err := stmtTx.Preparex("SELECT * FROM $1 WHERE question_id=$2;")
Run Code Online (Sandbox Code Playgroud)
然而,这给了我一个语法错误/$1/
。我可以不使用绑定变量作为表名吗?
我可以不使用绑定变量作为表名吗?
不,引用来源。
参数只能用作数据值,不能用作标识符。因此,例如这是合理的:
Run Code Online (Sandbox Code Playgroud)INSERT INTO mytable VALUES ($1);
但这是行不通的:
Run Code Online (Sandbox Code Playgroud)INSERT INTO $1 VALUES (42);
fmt.Sprintf
但如果需要,您可以使用表名称,但保留 $1、$2、... 作为数据值。