#oracle #plsqldeveloper
#Oracle #plsqldeveloper
Вопрос:
В Oracle PL / SQL, почему я не мог назвать блок, используя соответствующие символы? Я использую PL / SQL Developer.Заранее спасибо.
Весь код: я попытался ввести приведенный ниже код, но после x number := 10 возникает исключение.Я не мог печатать дальше.
<<outer_block>>
declare
x number := 10;
begin
dbms_output.put_line('x is ' || x);
end;
Код :
SQL> <<block1>>
2 declare
3 x number := 10;
Трассировка исключений :
<<block1>>
declare
x number := 10
ORA-06550: line 5, column 0:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
* amp; = - ; < / > at in is mod remainder not rem
<an exponent (**)> <> or != or ~= >= <= <> and or like LIKE2_
LIKE4_ LIKEC_ between || multiset member SUBMULTISET_
Комментарии:
1. Ошибка в строке 5, так что это должно быть что-то другое. Не могли бы вы поделиться еще фрагментом кода, пожалуйста?
2. пожалуйста, проверьте обновленный вопрос. Спасибо за ответ.
3. у вас также должны быть НАЧАЛО и КОНЕЦ.. как здесь
4. именованные теги действительно полезны только внутри раздела begin / end . И сам анонимный блок даже не запускается, пока вы не нажмете на строку объявления. Чего именно вы пытаетесь достичь?
5. Спасибо за все ваши ответы.
Ответ №1:
Это ошибка в PL / SQL Developer . Я большой поклонник PL / SQL Developer, но вся идея командного окна неверна. Вся функция является ошибкой. Вместо этого используйте командную строку SQL*Plus .
Тысячи инструментов подключаются к Oracle. Все они работают немного по-разному и имеют разные ошибки. Для специальной разработки это не имеет большого значения, каждый разработчик может использовать тот инструмент, с которым ему удобно. SQL * Plus довольно паршивый для разработки.
Но когда дело доходит до устранения неполадок и развертывания, нам нужен инструмент, который всегда будет работать одинаково на всех платформах. Этот инструмент — SQL * Plus .
Имитация SQL * Plus — ужасная идея. Если это не может быть выполнено на 100% точно, это разрушает основное преимущество использования SQL * Plus — согласованность. Всегда используйте настоящий SQL * Plus , а не имитацию.
Обновить
Как указывали другие, это неправильный способ использования меток. Однако синтаксис по-прежнему технически корректен и будет выполняться в SQL * Plus и некоторых других средах без ошибок.
Комментарии:
1. Спасибо за все ваши ответы.
Ответ №2:
<<Name>>
Синтаксис предназначен для именования циклов. Полезно, когда у вас есть вложенные циклы и вам нужно использовать синтаксис EXIT loop_name WHEN … для управления тем, какой цикл завершать.
См . http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/controlstructures.htm#BABJCCFJ для примера