Wiki source code of Ошибки при выполнении запроса в Oracle: PLS-00103 — неожиданный символ в 5.77.1.14 версии
Last modified by Nefedenkova Viktoria on 2024/02/09 10:18
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | Ошибка PLS-00103 является сообщением об ошибке, которое может возникнуть при компиляции программного кода на языке PL/SQL. Эта ошибка говорит о том, что в коде встретился символ, ожидался один из определенного списка символов. Ошибка PLS-00103 обычно указывает на нарушение синтаксиса или неправильное использование определенного ключевого слова или оператора. | ||
| 2 | |||
| 3 | [[image:1.jpg||height="70%" width="70%"]] | ||
| 4 | |||
| 5 | Самое частое заблуждение при возникновении ошибки PLS-00103 заключается в том, что она указывает на самое первое место, где был встречен символ, который не был ожидаемым. Однако, на самом деле, символ, который инициирует ошибку, может находиться гораздо дальше в коде, но ошибка заявлена, когда PL/SQL не может продолжить обработку после этого символа. | ||
| 6 | |||
| 7 | Например, если в коде встретится символ «+», ожидается, что будет следовать операнд для выполнения арифметической операции. Ошибка PLS-00103 возникнет, если операнд отсутствует или имеет неправильный формат. | ||
| 8 | |||
| 9 | Для исправления ошибки PLS-00103 необходимо внимательно изучить код и найти место, где был встречен неожиданный символ. После этого нужно проверить контекст, в котором происходит его использование, чтобы понять, какой символ ожидается. Далее нужно внести необходимые исправления, чтобы код соответствовал требованиям языка PL/SQL. | ||
| 10 | |||
| 11 | Чтобы избежать ошибок PLS-00103, рекомендуется тщательно проверять код перед его компиляцией и следовать рекомендациям по правильному использованию скобок, операторов и ключевых слов. | ||
| 12 | Например, в данном случае нужно открыть запрос действия и убрать лишний END: | ||
| 13 | |||
| 14 | [[image:2.jpg||height="70%" width="70%"]] | ||
| 15 | |||
| 16 | [[image:3.jpg||height="70%" width="70%"]] | ||
| 17 | |||
| 18 | Старые версии каким-то магическим образом обрезали блок по него и он успешно выполнялся, но НЕ делал задуманные в нём проверки, что могло приводить к неверным данным. | ||
| 19 | Удалили лишний end - все версии работают как задумано. | ||
| 20 | |||
| 21 | Код, который падает, есть в | ||
| 22 | OBJ_ID PATH | ||
| 23 | ------------- ------------------------------------------------------------------------------------------------------------------------ | ||
| 24 | 9458 SQL1 <- Actions: Action_GFC <- Intrarea marfurilor (fara specificare) <- Documents: Intrari <- Documents: Marfa | ||
| 25 | 5440 SQL1 <- Actions: Action_GFC <- Intrarea marfurilor <- Documents: Intrari <- Documents: Marfa | ||
| 26 | Что не сходится с названием действия. | ||
| 27 | |||
| 28 | А вообще, там после завершения анонимного блока есть ещё код, вот и ругается. | ||
| 29 | |||
| 30 | В старых версиях эта проблема не проявляется. | ||
| 31 | |||
| 32 | Это код в "Intrarea marfurilor (fara specificare)", который не менялся с 04.10.2017 15:30:05 | ||
| 33 | И он не мог работать. | ||
| 34 | |||
| 35 | К новой версии нужен новый pkg_docs_util. Скачать его можно отсюда: [[package specification>>https://xwiki.una.md/bin/download/UNA/PLS%2D00103_error/pkgdocsutil.pkg.2.sql]], [[package body>>https://xwiki.una.md/bin/download/UNA/PLS%2D00103_error/pkgdocsutil.bdy.4.sql]], [[schema grants>>https://xwiki.una.md/bin/download/UNA/PLS%2D00103_error/schema.grants.sql]]. |