SELECT * FROM tbl_emp WHERE interest = $ 1 AND emp_id = ANY(?)
上述语句是否正确用于PQprepare函数?
如果是,那么nParams的值应该是什么?PQexecPrepared将如何被调用?
此致 Mayank
答案 0 :(得分: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)
并且参数的类型例如是int
和int[]
。
要调用PQexecPrepared
,您需要一个数组作为字符串文字。像"{1, 2, 3}"
(作为C字符串)这样的东西就可以了。有关详细信息,请参阅documentation。