in Operatoren sind nicht immer die beste lösung, es gibt aber mehrere workarounds neben der schon erwähnten, das als string zusammenzubauen und dann mit execute statement zu arbeiten
Ich mach das mittlerweile meistens so, das die parameter in eine GTT (global temporary table) gepackt werden und dann ganz normal an den restlichen
SQL gejoint wird.
alternatv kannst du wenn du den parameter in die sp als String übergibst und diese einen defininerten Trenner hat auch so was machen, das aber nur für kleinen datenmenge sinnvoll.
select * from sp(';1;5;7;9;')
...
create procedure sp
(p varchar(800))
as
begin
for select id from tab where :p containing ';'||tab.id||';' into .....
....
end
Bei der Lösung mit der gtt klappt das auch mit dem optimierer sehr gut, beim 2. vorschlag hast du immer full table scan, aber bei kleiner Tabellen kann das durchaus ok sein.