sql >> Database >  >> RDS >> Oracle

Hoe ORA-01795 in Java-code op te lossen?

Er zijn drie mogelijke manieren om deze limiet te omzeilen:

1) Zoals je al zei:verdeel het overzicht in batches van 1000

2) Maak een afgeleide tabel met behulp van de waarden en voeg ze vervolgens samen:

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);

je kunt ook die waarden samenvoegen - misschien zelfs sneller:

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;

Dit genereert nog steeds een heel, heel groot statement, maar heeft niet de limiet van 1000 ids. Ik weet echter niet zeker hoe snel Oracle dit zal ontleden.

3) Voeg de waarden in een (algemene) tijdelijke tabel in en gebruik dan een IN clausule (of een JOIN ). Dit is waarschijnlijk de snelste oplossing.



  1. De naam van een CHECK-beperking in SQL Server wijzigen met T-SQL

  2. MySQL geeft een onbekende kolom 'user.id' in 'field list' fout met behulp van Django's automatische id

  3. converteer string naar datum php

  4. Oracle invoegen in tabel2 en vervolgens verwijderen uit tabel1, uitzondering indien mislukt