Parametrar fungerar inte så; de har ingen aning om att det du försöker tillhandahålla är en kommaseparerad lista med värden. Om du ställer in ParamByName('WhatEver').AsString
eller Value
, tror den att du menar en sträng med citattecken som innehåller allt som hör hemma i den parametern. Så den gör precis vad den ser ut att - den skickar IN ('1, 2, 3')
, istället för den avsedda IN (1, 2, 3)
.
Du måste antingen gå tillbaka till att analysera det själv och använda en temporär tabell, eller bygga WHERE
sats dynamiskt och sammanfoga den innan frågan körs. (Du kan faktiskt bygga frågan dynamiskt och skapa en ny parameter för vart och ett av objekten i IN
sats, och sedan gå igenom och tilldela värden till var och en av dessa dynamiskt skapade parametrar, men det blir väldigt fult väldigt snabbt.)