Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Saída errada do MySQL com cláusula e parâmetro IN


Os parâmetros não funcionam assim; eles não têm idéia de que o que você está tentando fornecer é uma lista de valores separados por vírgulas. Se você definir ParamByName('WhatEver').AsString ou Value , ele pensa que você quer dizer uma string entre aspas que contém tudo o que pertence a esse parâmetro. Então está fazendo exatamente o que parece - está passando IN ('1, 2, 3') , em vez do IN (1, 2, 3) pretendido .

Você precisará voltar a analisá-lo e usar uma tabela temporária ou criar o WHERE cláusula dinamicamente e concatenando-a antes de executar a consulta. (Na verdade, você pode construir a consulta dinamicamente, criando um novo parâmetro para cada um dos itens no IN cláusula e, em seguida, percorrer e atribuir valores a cada um desses parâmetros criados dinamicamente, mas isso fica muito feio muito rapidamente.)