Nein, je Wert ein Parameter, aber nicht ein Parameter für mehrere Werte.
Wieviele Werte musst Du maximal abdecken können?
Wenn das klar und eindeutig definiert ist, dann fülle die Parameter von links nach rechts mit den abzufragenden Werten und für die verbleibenden Werte nimmst Du immer den letzten Wert.
Sinngemäß sowas in der Art:
SQL-Code:
select
count(w.warehouseid) as total
from
warehouse w
where
w.locationid IN (:p0, :p1, :p2, :p3, :p4, :p5, :p6, :p7, :p8, :p9)
In Delphi sinngemäß sowas:
Delphi-Quellcode:
Parameter[0].Value := 0;
Parameter[1].Value := 1;
Parameter[2].Value := 2;
Parameter[3].Value := 3;
Parameter[4].Value := 3;
Parameter[5].Value := 3;
Parameter[6].Value := 3;
Parameter[7].Value := 3;
Parameter[8].Value := 3;
Parameter[9].Value := 3;
Ergäbe dann ein
SQL-Code:
select
count(w.warehouseid) as total
from
warehouse w
where
w.locationid IN (0, 1, 2, 3, 3, 3, 3, 3, 3, 3)
Unelegant, ist bei 'ner IN-Klausel aber ok, aber in der Flexibilität immer begrenzt.
Alternative:
Eine temporäre Tabelle bauen, sowas in der Art:
create table InWerte (Wert integer not null);
Diese Tabelle mit den abzufragenden Werte befüllen und das Abfrage-
SQL anpassen.
SQL-Code:
select
count(w.warehouseid) as total
from
warehouse w
where
w.locationid IN (select wert from InWerte)
Bei diesem Konstrukt kannst Du 1:n Werte abfragen. Bei einer über Konstanten oder Parameter zusammengebauten Abfrage, ist die Menge der Werte (datenbankabhängig) begrenzt.
Anschließend das Leeren der Tabelle InWerte nicht vergessen.