Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak rozwiązać ORA-01795 w kodzie Java?

Istnieją trzy potencjalne sposoby obejścia tego limitu:

1) Jak już wspomniałeś:podziel wyciąg na partie po 1000

2) Utwórz tabelę pochodną, ​​używając wartości, a następnie połącz je:

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

alternatywnie możesz również połączyć te wartości - może być nawet szybciej:

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;

To wciąż generuje naprawdę, naprawdę duże zestawienie, ale nie ma limitu 1000 identyfikatorów. Nie jestem jednak pewien, jak szybko Oracle to przeanalizuje.

3) Wstaw wartości do (globalnej) tabeli tymczasowej, a następnie użyj IN klauzula (lub JOIN ). To prawdopodobnie będzie najszybsze rozwiązanie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcja agregacji Oracle do alokacji kwoty

  2. Wyjście zapytania SQL w VBA jest inne niż w SQL Oracle

  3. Jak generować wiersze dla zakresu dat według klucza

  4. Jak mogę przechowywać duże ilości danych z bazy danych do XML (problem z pamięcią)?

  5. Jak symulować przepełnienie 32-bitowej liczby całkowitej ze znakiem w PL/SQL?