Ошибки при выполнении запроса в Oracle: PLS-00103 — неожиданный символ в 5.77.1.14 версии

Last modified by Nefedenkova Viktoria on 2024/02/09 10:18

Ошибка PLS-00103 является сообщением об ошибке, которое может возникнуть при компиляции программного кода на языке PL/SQL. Эта ошибка говорит о том, что в коде встретился символ, ожидался один из определенного списка символов. Ошибка PLS-00103 обычно указывает на нарушение синтаксиса или неправильное использование определенного ключевого слова или оператора.

1.jpg

Самое частое заблуждение при возникновении ошибки PLS-00103 заключается в том, что она указывает на самое первое место, где был встречен символ, который не был ожидаемым. Однако, на самом деле, символ, который инициирует ошибку, может находиться гораздо дальше в коде, но ошибка заявлена, когда PL/SQL не может продолжить обработку после этого символа.

Например, если в коде встретится символ «+», ожидается, что будет следовать операнд для выполнения арифметической операции. Ошибка PLS-00103 возникнет, если операнд отсутствует или имеет неправильный формат.

Для исправления ошибки PLS-00103 необходимо внимательно изучить код и найти место, где был встречен неожиданный символ. После этого нужно проверить контекст, в котором происходит его использование, чтобы понять, какой символ ожидается. Далее нужно внести необходимые исправления, чтобы код соответствовал требованиям языка PL/SQL.

Чтобы избежать ошибок PLS-00103, рекомендуется тщательно проверять код перед его компиляцией и следовать рекомендациям по правильному использованию скобок, операторов и ключевых слов.
Например, в данном случае нужно открыть запрос действия и убрать лишний END:

2.jpg

3.jpg

Старые версии каким-то магическим образом обрезали блок по него и он успешно выполнялся, но НЕ делал задуманные в нём проверки, что могло приводить к неверным данным.
Удалили лишний end - все версии работают как задумано.

Код, который падает, есть в
       OBJ_ID PATH


 
         9458  SQL1 <- Actions: Action_GFC <- Intrarea marfurilor (fara specificare) <- Documents: Intrari <- Documents: Marfa
         5440  SQL1 <- Actions: Action_GFC <- Intrarea marfurilor <- Documents: Intrari <- Documents: Marfa
Что не сходится с названием действия.

А вообще, там после завершения анонимного блока есть ещё код, вот и ругается.

В старых версиях эта проблема не проявляется.

Это код в "Intrarea marfurilor (fara specificare)", который не менялся с 04.10.2017 15:30:05
И он не мог работать.

К новой версии нужен новый pkg_docs_util. Скачать его можно отсюда: package specification, package body, schema grants.