Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana mengatasi ORA-01795 dalam kode Java

Ada tiga cara potensial untuk mengatasi batas ini:

1) Seperti yang telah Anda sebutkan:pisahkan pernyataan dalam kelompok 1000

2) Buat tabel turunan menggunakan nilai-nilai tersebut, lalu gabungkan dengannya:

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

sebagai alternatif, Anda juga dapat menggabungkan nilai-nilai tersebut - bahkan mungkin lebih cepat:

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;

Ini masih menghasilkan pernyataan yang sangat, sangat besar, tetapi tidak memiliki batas 1000 id. Saya tidak yakin seberapa cepat Oracle akan menguraikan ini.

3) Masukkan nilai ke dalam tabel sementara (global) dan kemudian gunakan IN klausa (atau JOIN ). Ini mungkin akan menjadi solusi tercepat.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Initcap melewatkan kata-kata yang lebih kecil dari 4 karakter

  2. Akses MS ke Oracle Konversi / Migrasi yang mudah

  3. Entity Framework menghasilkan short alih-alih int

  4. ORA-00927:tanda sama dengan hilang

  5. Spring JDBC Tidak dapat memuat kelas driver JDBC [Oracle.jdbc.driver.OracleDriver]