2011-05-01 3 views

Répondre

6

Si vous essayez de préparer quelque chose comme = ANY (1, 2, 3), cela ne fonctionnera pas directement, car 1, 2, 3 est une construction syntaxique, et non une expression. (Bien sûr, vous pouvez faire = ANY ($2, $3, $4), mais cela ne fonctionne que si vous savez exactement combien de valeurs vous avez.)

Mais vous pouvez le faire avec des tableaux. Ce qui précède est équivalent à = ANY(ARRAY[1, 2, 3]), et vous auriez donc écrire

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

et les types de paramètres sont, par exemple, int et int[].

Pour appeler PQexecPrepared, vous aurez besoin d'un tableau en tant que chaîne littérale. Quelque chose comme "{1, 2, 3}" (comme une chaîne de caractères C) fera l'affaire. Voir le documentation pour plus de détails.

+0

Merci beaucoup Peter. Tout ce que vous avez dit a parfaitement fonctionné. (Bien que je ne pouvais pas voter comme il fallait 15 réputations). Eh bien, je pense utiliser PQexec et passer les instructions PREPARE et EXECUTE, au lieu d'utiliser PQprepare et PQexecPrepared. Sera-ce un problème de performance pratique. – Mayank

Questions connexes