Какова максимальная длина оператора в Oracle

Я создаю инструкцию SQL, содержащую данные, и мне интересно, нарушу ли я некоторую максимальную длину инструкции в Oracle 10g.

Заявление будет иметь размер около 3 200 000 байт, не может быть разделено и должно анализироваться полностью.

Прежде чем я потрачу слишком много времени таким образом, мне было интересно, не буду ли я ограничен размером этого утверждения.

Я использую разработчика SQL, но я думаю, что если сервер может это сделать, то и разработчик SQL может.


person BenoitParis    schedule 16.01.2013    source источник
comment
Что вы имеете в виду под запросом? Я запустил сценарий размером 20,1 МБ (который содержит вставки). Если код был включен в ключевые слова BEGIN/END, SQLDeveloper зависал. Если бы команды были похожи на скрипты, все работало бы гладко.   -  person Florin Ghita    schedule 16.01.2013
comment
@FlorinGhita Я имею в виду только одно утверждение. Это будет MERGE... USING, где предложение USING состоит из множества SELECT, которые будут объединены в UNION.   -  person BenoitParis    schedule 16.01.2013
comment
В худшем случае просто создайте представление ;)   -  person Plouf    schedule 16.01.2013
comment
Вы задаете вопрос. Не помещайте свои данные в оператор SQL - например. положите его на стол или привяжите.   -  person Jeffrey Kemp    schedule 24.01.2013


Ответы (2)


Фиксированного номера нет. См. «Лимит логической базы данных»: http://docs.oracle.com/cd/B19306_01/server.102/b14237/limits003.htm

«Ограничение длины оператора SQL зависит от многих факторов, включая конфигурацию базы данных, дисковое пространство и память».

На вас также могут повлиять другие ограничения, такие как максимальное количество подзапросов.

Учитывая, что максимальная длина PL/SQL-процедур составляет 2000-3000 строк, мне кажется, что у вас могут возникнуть проблемы с запросом размером 3 Мбайт. Я также думаю, что если это вообще заработает, время разбора будет «интересным».

person Chris    schedule 16.01.2013
comment
Привет, Крис! Есть ли у вас практический опыт в том, как оценить максимальный размер? Эта фраза из документов действительно расстраивает. - person Alexey Trofimov; 22.06.2020
comment
У меня никогда не было необходимости использовать такие длинные операторы, так что нет, у меня нет никакого практического опыта в этом. - person Chris; 23.06.2020
comment
Понятно, спасибо. Просто случайно преодолел эту ситуацию, запрос длиной 226 КБ (с большим количеством автоматически сгенерированных предложений IN (...)) вызывал ошибку, в то время как запрос, уменьшенный до 100 КБ с той же структурой, завершается нормально. - person Alexey Trofimov; 23.06.2020

В соответствии с документацией 11.2 Лимиты:

Максимальная длина оператора SQL, включая завершающий символ NULL. 409 600

https://docs.oracle.com/cd/E11882_01/timesten.112/e21643/limit.htm#TTREF455

person Thomas Rieder    schedule 08.01.2019
comment
Ваша ссылка указывает на справочник по базе данных в памяти TimesTen, поэтому я думаю, что это вводит в заблуждение, учитывая, что вопрос больше касается SQL-сервера Oracle. - person Tobias Meyer; 30.01.2020