Postgresql使用运算符ANY准备语句

时间:2011-05-01 11:08:12

标签: postgresql prepared-statement

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

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

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

此致 Mayank

1 个答案:

答案 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)

并且参数的类型例如是intint[]

要调用PQexecPrepared,您需要一个数组作为字符串文字。像"{1, 2, 3}"(作为C字符串)这样的东西就可以了。有关详细信息,请参阅documentation