Esistono tre potenziali modi per aggirare questo limite:
1) Come hai già detto:suddividi l'estratto conto in lotti da 1000
2) Crea una tabella derivata usando i valori e poi uniscili:
with id_list (id) as (
select 'V1' from dual union all
select 'V2' from dual union all
select 'V3' from dual
)
select *
from the_table
where column_name in (select id from id_list);
in alternativa potresti anche unirti a quei valori - potrebbe anche essere più veloce:
with id_list (id) as (
select 'V1' from dual union all
select 'V2' from dual union all
select 'V3' from dual
)
select t.*
from the_table t
join id_list l on t.column_name = l.id;
Questo genera ancora una dichiarazione davvero, davvero enorme, ma non ha il limite di 1000 ID. Tuttavia, non sono sicuro di quanto velocemente Oracle analizzerà questo.
3) Inserisci i valori in una tabella temporanea (globale) e poi usa un IN
clausola (o un JOIN
). Questa sarà probabilmente la soluzione più veloce.