Postgresql使用运算符ANY准备语句

May*_*ank 0 postgresql prepared-statement

SELECT*FROM tbl_emp WHERE interest = $ 1 AND emp_id = ANY(?)

以上语句是否正确用于函数PQprepare?

如果是,那么nParams的值应该是什么?PQexecPrepared将如何被调用?

此致,Mayank

Pet*_*aut 6

如果你正在尝试准备类似的东西= ANY (1, 2, 3),这将无法直接起作用,因为它1, 2, 3是一个句法结构,而不是一个表达式.(当然你可以这样做= ANY ($2, $3, $4),但只有你知道你有多少价值才有效.)

但你可以用数组来做.以上相当于= ANY(ARRAY[1, 2, 3]),所以你要写

SELECT * FROM tbl_emp WHERE interest = $1 AND emp_id = ANY($2)
Run Code Online (Sandbox Code Playgroud)

而且,参数的类型是,比如intint[].

要调用PQexecPrepared,您需要一个数组作为字符串文字.像"{1, 2, 3}"(作为C字符串)的东西会做.有关详细信息,请参阅文档