Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL mauvaise sortie avec la clause IN et le paramètre

Les paramètres ne fonctionnent pas comme ça ; ils n'ont aucune idée que ce que vous essayez de fournir est une liste de valeurs séparées par des virgules. Si vous définissez ParamByName('WhatEver').AsString ou Value , il pense que vous voulez dire une chaîne entre guillemets qui contient tout ce qui appartient à ce paramètre. Donc, il fait exactement ce qu'il semble - il passe IN ('1, 2, 3') , au lieu du prévu IN (1, 2, 3) .

Vous devrez soit recommencer à l'analyser vous-même et utiliser une table temporaire, soit créer le WHERE clause dynamiquement et en la concaténant avant d'exécuter la requête. (En fait, vous pouvez construire la requête dynamiquement, en créant un nouveau paramètre pour chacun des éléments dans le IN clause, puis bouclez et attribuez des valeurs à chacun de ces paramètres créés dynamiquement, mais cela devient très moche très rapidement.)