#sql #database #oracle #docker
Вопрос:
Я установил oracle db версии 19c в своей среде docker и настроил базу данных, заполненную фиктивными данными. Тем не менее, когда я пытаюсь выполнить очень большой запрос, я получаю ошибку:
SP2-0341: переполнение строки при замене переменной (>3000 символов в строке 1).
Я пытался разделить его с помощью взломов линий, но в зависимости от того, как я его разделяю, я получаю всевозможные ошибки, такие как:
ОШИБКА в строке 2: ORA-00933: неправильно завершена команда SQL
или
ОШИБКА в строке 2: SP2-0341: переполнение строки при подстановке переменных (>3000 символов в строке 3)
Запрос отформатирован следующим образом
SELECT AA.n_name AS AA_n_name, AA.n_nationkey AS ...
FROM nation AS AA FULL OUTER JOIN supplier...
WHERE (AC.p_partkey = ... AND...) OR((AC.p_partkey = ...)); -- The where part is over 5000 characters long--
Есть ли альтернатива или решение для решения этой проблемы в командной строке? Я также попытался запустить запрос в виде файла sql и достиг предела 4999. Я нахожусь на сервере Ubuntu, если это поможет, и любая помощь будет оценена по достоинству.
Комментарии:
1. Вы можете вставлять новые строки в любом месте вашего сценария
2. Когда я сказал «разрывы строк», я имел в виду новые строки, так что, к сожалению, я все еще застрял.
3. Какова длина всего вашего запроса и почему он такой огромный?
4. Он содержит более 6000 символов и предназначен для проекта, над которым я работаю.
5. Тогда похоже, что запрос неправильно сформирован, потому что разрывы строк разрешены в любом месте и никогда не приводят к какой-либо ошибке. Я не могу представить себе рукописный запрос длиной 6000 строк, расположенный в одной строке: никто не напишет его правильно с одной попытки, и для удобства чтения он должен быть написан шаг за шагом с соответствующим форматированием. Так грустно, но, похоже, на этот вопрос нельзя ответить
Ответ №1:
Это зависит от среды, в которой вы работаете, но, как правило, вы можете продолжить команду в следующей строке, закончив строку «обратной косой чертой».
Комментарии:
1. Спасибо за предложение, я пробовал это раньше, но, к сожалению, это приводит к ошибке: ORA-00933: команда SQL неправильно завершена .
2. Запрос действительно был неправильным, и когда он был исправлен, это решение сработало.