Mysql
 sql >> Database >  >> RDS >> Mysql

Output errato di MySQL con clausola IN e parametro

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