se me ocurre una un poco diferente y es algo como lo siguiente:
Código SQL
[-]
codigos = '1,3,5,12';
cadena = '';
numero=0;
j=1;
i = strlen(:codigos);
while(j<=i) do
begin
c = substr(FACTURA,j,j);
if (c between '0' and '9') then
begin
cadena = cadena || cast(:c as varchar(1));
end
else if ((c=',') or (j=i)) then
begin
numero = cast(:cadena as integer);
select * from INFORME_FACT(:numero);
cadena = '';
end;
j=j+1;
end
ya el problema es cuando se manden muchos codigos en la cadena (como tal es algo q se me ocurrio y debe de tener muchos errores pero es solo una idea)