sql >> Base de Datos >  >> RDS >> Mysql

Salida incorrecta de MySQL con cláusula IN y parámetro

Los parámetros no funcionan así; no tienen idea de que lo que está tratando de proporcionar es una lista de valores separados por comas. Si configura ParamByName('WhatEver').AsString o Value , cree que te refieres a una cadena entrecomillada que contiene todo lo que pertenece a ese parámetro. Así que está haciendo exactamente lo que parece:está pasando IN ('1, 2, 3') , en lugar del IN (1, 2, 3) previsto .

Deberá volver a analizarlo usted mismo y usar una tabla temporal, o construir el WHERE cláusula dinámicamente y concatenándola antes de ejecutar la consulta. (En realidad, podría generar la consulta dinámicamente, creando un nuevo parámetro para cada uno de los elementos en el IN cláusula, y luego recorre y asigna valores a cada uno de esos parámetros creados dinámicamente, pero eso se pone muy feo muy rápidamente).