Параметрите не работят така; те нямат представа, че това, което се опитвате да предоставите, е разделен със запетая списък със стойности. Ако зададете ParamByName('WhatEver').AsString
или Value
, смята, че имате предвид низ в кавички, който съдържа всичко, което принадлежи на този параметър. Така че прави точно това, което изглежда - предава IN ('1, 2, 3')
, вместо предвидения IN (1, 2, 3)
.
Ще трябва или да се върнете, за да го анализирате сами и да използвате временна таблица, или да създадете WHERE
клауза динамично и го конкатенира преди да изпълни заявката. (Всъщност бихте могли да изградите заявката динамично, създавайки нов параметър за всеки от елементите в IN
клауза и след това прегледайте и присвоете стойности на всеки от тези динамично създадени параметри, но това става много грозно много бързо.)