В Oracle PL / SQL, почему я не мог назвать блок, используя <>

#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 для примера