Parametry takto nefungují; nemají ponětí, že to, co se snažíte poskytnout, je seznam hodnot oddělených čárkami. Pokud nastavíte ParamByName('WhatEver').AsString
nebo Value
, myslí si, že máte na mysli řetězec v uvozovkách, který obsahuje vše, co patří do tohoto parametru. Dělá tedy přesně to, co vypadá – předává IN ('1, 2, 3')
, namísto zamýšleného IN (1, 2, 3)
.
Budete se muset buď vrátit k analýze sami a pomocí dočasné tabulky, nebo vytvořit WHERE
klauzule dynamicky a před provedením dotazu ji zřetězí. (Ve skutečnosti byste mohli dotaz sestavit dynamicky vytvořením nového parametru pro každou z položek v IN
klauzuli a poté procházet a přiřazovat hodnoty každému z těchto dynamicky vytvářených parametrů, ale to se velmi rychle stane velmi ošklivým.)