Parametry nie działają w ten sposób; nie mają pojęcia, że to, co próbujesz podać, jest listą wartości oddzielonych przecinkami. Jeśli ustawisz ParamByName('WhatEver').AsString
lub Value
, myśli, że masz na myśli ciąg w cudzysłowie, który zawiera wszystko, co należy do tego parametru. Robi dokładnie to, na co wygląda — przekazuje IN ('1, 2, 3')
, zamiast zamierzonego IN (1, 2, 3)
.
Musisz albo wrócić do samodzielnego analizowania i używania tabeli tymczasowej, albo zbudować WHERE
klauzulę dynamicznie i łącząc ją przed wykonaniem zapytania. (Właściwie możesz zbudować zapytanie dynamicznie, tworząc nowy parametr dla każdego elementu w IN
klauzuli, a następnie przejdź przez pętlę i przypisz wartości do każdego z tych dynamicznie tworzonych parametrów, ale to bardzo szybko staje się bardzo brzydkie.)