Postgres sqlx使用表名bindvar准备语句

时间:2014-09-02 19:35:16

标签: sql postgresql go prepared-statement

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

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

然而,这给了我/$1/周围的语法错误。我可以不为表名使用bind var吗?

2 个答案:

答案 0 :(得分:1)

  

我可以不为表名使用bind var吗?

不,source of quote.

  

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

INSERT INTO mytable VALUES ($1);
     

但这不起作用:

INSERT INTO $1 VALUES (42);

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

答案 1 :(得分:0)

有关常规解决方案,请参阅此页:

http://www.postgresql.org/docs/9.1/static/ecpg-dynamic.html