Выберите длинный список параметров в Oracle, используя see - PullRequest
1 голос
/ 20 декабря 2011

У меня есть длинный список выбора, который будет использоваться в предложении select in в oracle db, и он выдаст мне ошибку с указанием

SP2-0027: слишком длинный ввод (> 2499 символов) - строка игнорируется

Есть ли лучший способ получить эти данные?

Мой запрос примерно такой

select * from clicks where click_id in( ''comma seperated list '');

список с запятыми - это что-то вроде ('1','2','3','4'.....)

Ответы [ 4 ]

2 голосов
/ 20 декабря 2011

Разделить список. Например.,

select * from clicks
where click_id in ('1','2','3','4')
or click_id in ('5','6','7','8');

и т.д.

1 голос
/ 22 декабря 2011

Это ошибка с SQL * Plus, а не с SQL.Просто добавьте новую строку где-нибудь перед символом 2500. Или выполните оператор в другой среде, такой как SQL Developer.

Подобно тому, что предложил @John Doyle, хотя вам не нужно использовать отдельное условие:

select * from clicks
where click_id in ('1','2','3','4',
'5','6','7','8');
1 голос
/ 20 декабря 2011

Замените список, разделенный запятыми, оператором SubSELECT.

WHERE click_id IN ( SELECT id FROM the_interesting_clicks WHERE ... )

[ORACLE] Может быть, вы хотите GLOBAL TEMPORARY TABLE для таких случаев: их содержимое является локальным для транзакции или сеанса (в зависимости от того, как вы объявляете таблицу). Итак: загрузите эту временную таблицу с подготовленным оператором INSERT, который вы вызываете несколько раз, а затем используйте подвыбор.

1 голос
/ 20 декабря 2011

Замените ваш разделенный запятыми список подзапросом:

select * from clicks where click_id in( SELECT click_id ...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...