I parametri non funzionano così; non hanno idea che ciò che stai cercando di fornire sia un elenco di valori separati da virgole. Se imposti ParamByName('WhatEver').AsString
o Value
, pensa che tu intenda una stringa tra virgolette che contiene tutto ciò che appartiene a quel parametro. Quindi sta facendo esattamente quello che sembra:sta passando IN ('1, 2, 3')
, invece del previsto IN (1, 2, 3)
.
Dovrai tornare ad analizzarlo tu stesso e utilizzare una tabella temporanea, oppure creare il WHERE
clausola dinamicamente e concatenandola prima di eseguire la query. (In realtà, potresti costruire la query in modo dinamico, creando un nuovo parametro per ciascuno degli elementi nel IN
clausola, quindi scorrere e assegnare valori a ciascuno di quei parametri creati dinamicamente, ma questo diventa molto brutto molto rapidamente.)