一尘不染

具有表名bindvar的Postgres sqlx准备的语句

go

我正在尝试使用Golang sqlx库创建准备好的语句。我想让表名成为bindVar

stmt, err := stmtTx.Preparex("SELECT * FROM $1 WHERE question_id=$2;")

但是,这给了我一个语法错误/$1/。我可以不使用绑定变量作为表名吗?


阅读 183

收藏
2020-07-02

共1个答案

一尘不染

我可以不使用绑定变量作为表名吗?

不,报价来源。

参数只能用作数据值,不能用作标识符。因此,例如,这是合理的:

INSERT INTO mytable VALUES ($1);

但这不起作用:

INSERT INTO $1 VALUES (42);

但是,如果需要,可以使用fmt.Sprintf表名,而将$ 1,$ 2,…保留为数据值。

2020-07-02