Если вы пытаетесь подготовить что-то вроде = 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).Подробнее см. Документацию 1017 *.