Postgresql подготовить заявление с оператором ЛЮБОЙ - PullRequest
0 голосов
/ 01 мая 2011

SELECT * FROM tbl_emp WHERE интереса = $ 1 И emp_id = ANY (?)

Правильно ли использовать приведенное выше утверждение для использования в функции PQprepare?

Если да, какое должно быть значениедля nParams и как будет называться PQexecPrepared?

С уважением, Mayank

1 Ответ

6 голосов
/ 01 мая 2011

Если вы пытаетесь подготовить что-то вроде = 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 *.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...