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.)