Oracle
 sql >> Database >  >> RDS >> Oracle

Come risolvere ORA-01795 nel codice Java

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.