Выполнение оператора с помощью clob? - PullRequest
0 голосов
/ 03 июля 2019

Два запроса:

Первый как:

with table_1 as ( select 'Item '||level item_name, level lvl from dual connect by level <= 10000 ) select * from table_1 where lvl in (1,2,3,4,5,6,7,....,997,998,999,1000)

И другой как:

with table_1 as ( select 'Item '||level item_name, level lvl from dual connect by level <= 10000 ) select * from table_1 where lvl in (1,2,3,4,5,6,7,....,1997,1998,1999,2000)

Я могу выполнить первый запрос в cx-oracle, но яне может запустить второй.Я знаю, что размер второго отличается, и концепция LOB / CLOB вступает в игру, но я не уверен, как использовать его здесь.

Могу ли я создать CLOB и выполнить запрос, или я думаю оэто все не так?

1 Ответ

0 голосов
/ 04 июля 2019

Существует ограничение в 1 тысячу значений, которые можно ввести в состояние «IN».Это документировано ниже: https://docs.oracle.com/database/121/SQLRF/conditions014.htm

Вы можете указать до 1000 выражений в expression_list.

Если вам нужно больше, вам нужно поместить эти значения в таблицуи сделать что-то вроде:

select ... where lvl in (select lvl from lvl_table)

Я хотел бы спросить, однако, почему вы используете IN?Ваш список выглядит как непрерывный список чисел, и если это точно, вы можете просто использовать что-то вроде

where level <= 10000

или любую комбинацию использования «между» или больше чем, меньше чем с «или».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...