Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да разрешите ORA-01795 в Java код

Има три възможни начина за заобикаляне на това ограничение:

1) Както вече споменахте:разделете изявлението на партиди от 1000

2) Създайте извлечена таблица, като използвате стойностите и след това ги обединете:

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

като алтернатива можете също да се присъедините към тези стойности - дори може да бъде по-бързо:

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;

Това все още генерира наистина, наистина огромно изявление, но няма ограничението от 1000 идентификатора. Не съм сигурен обаче колко бързо Oracle ще анализира това.

3) Вмъкнете стойностите в (глобална) временна таблица и след това използвайте IN клауза (или JOIN ). Това вероятно ще бъде най-бързото решение.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Намерете всички нечислови стойности в колона в Oracle

  2. PL/SQL - Пример за грешка за повдигане на приложението

  3. Настройка на SQL

  4. Използване на Substr с Instr за извличане на низ в Oracle

  5. SQL тип данни, който да се използва при вмъкване на пари