Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / что означает текст в двойных угловых скобках в plsql блоке? / 13 сообщений из 13, страница 1 из 1
19.07.2017, 12:12
    #39491468
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что означает текст в двойных угловых скобках в plsql блоке?
Код: plsql
1.
2.
begin <<FINISH_PROCESS0>> 	dbms_output.put_line('hello world'); end;
/



что это
Код: plaintext
<<FINISH_PROCESS0>>
такое и почему это работает?
...
Рейтинг: 0 / 0
19.07.2017, 12:24
    #39491486
Maxim Demenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что означает текст в двойных угловых скобках в plsql блоке?
Dmitry.,

RTFM

Regards

Maxim
...
Рейтинг: 0 / 0
19.07.2017, 12:27
    #39491488
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что означает текст в двойных угловых скобках в plsql блоке?
...
Рейтинг: 0 / 0
19.07.2017, 14:20
    #39491596
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что означает текст в двойных угловых скобках в plsql блоке?
ElicRTFM PL/SQL statement (FAQ)

[ << label >> ]... [ DECLARE declare_section ] body

BEGIN statement [ statement | inline_pragma ]...
[ EXCEPTION exception_handler [ exception_handler ]... ] END [ name ] ;

name

The name of the block to which END applies—a label, function name, procedure name, or package name.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SQL> ed
Wrote file afiedt.buf

  1  <<L_label>>
  2  begin
  3   null;
  4* end L_name;
SQL> /

PL/SQL procedure successfully completed.

SQL>


L_name к чему applies?


....
stax
...
Рейтинг: 0 / 0
19.07.2017, 14:46
    #39491616
a label
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что означает текст в двойных угловых скобках в plsql блоке?
stax..L_name к чему applies?к block
...
Рейтинг: 0 / 0
19.07.2017, 14:55
    #39491625
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что означает текст в двойных угловых скобках в plsql блоке?
a labelstax..L_name к чему applies?к block

гугл

Имя блока, к которому применяется END - метка, имя функции, имя процедуры или имя пакета.

Имя блока
1) метка
2) имя функции
3) имя процедуры
4) имя пакета

где есть блок?

ps
Имя блока, к которому применяется END - метка, имя функции, имя процедуры, имя пакета или блок.
так?


.....
stax
...
Рейтинг: 0 / 0
19.07.2017, 15:14
    #39491651
Maxim Demenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что означает текст в двойных угловых скобках в plsql блоке?
stax..,

Ни к чему не применяется. Синтактическая погрешность толерируемая sqlplus
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SQL> set echo on
SQL> <<L_label>>
  2  begin
  3    null;
  4    goto L_name;
  5  end L_name;
  6  /
  goto L_name;
       *
ERROR at line 4:
ORA-06550: line 4, column 8:
PLS-00201: identifier 'L_NAME' must be declared
ORA-06550: line 4, column 3:
PL/SQL: Statement ignored



Regards

Maxim
...
Рейтинг: 0 / 0
19.07.2017, 15:20
    #39491665
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что означает текст в двойных угловых скобках в plsql блоке?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<<extrn>>
declare
  l_var varchar2(200) := 'External';
begin
  <<intrn>>
  declare
    l_var varchar2(200) := 'Internal';
  begin
    dbms_output.put_line(intrn.l_var);
    dbms_output.put_line(extrn.l_var);
  end;
end;

anonymous block completed
Internal
External
...
Рейтинг: 0 / 0
19.07.2017, 15:26
    #39491673
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что означает текст в двойных угловых скобках в plsql блоке?
Maxim Demenkostax..,

Ни к чему не применяется. Синтактическая погрешность толерируемая sqlplus
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SQL> set echo on
SQL> <<L_label>>
  2  begin
  3    null;
  4    goto L_name;
  5  end L_name;
  6  /
  goto L_name;
       *
ERROR at line 4:
ORA-06550: line 4, column 8:
PLS-00201: identifier 'L_NAME' must be declared
ORA-06550: line 4, column 3:
PL/SQL: Statement ignored



Regards

Maxim

причем сдесь плюс, как он может толерирувать?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
declare
 i int :=0;
begin
 null;
 <<M_label>>
 begin
  i:=i+1;
  dbms_output.put_line(i);
  if i<5 then
     goto M_label;
  end if;
 end B_block;
 null ;
end;
/


.....
stax
...
Рейтинг: 0 / 0
19.07.2017, 15:28
    #39491676
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что означает текст в двойных угловых скобках в plsql блоке?
andrey_anonymous
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<<extrn>>
declare
  l_var varchar2(200) := 'External';
begin
  <<intrn>>
  declare
    l_var varchar2(200) := 'Internal';
  begin
    dbms_output.put_line(intrn.l_var);
    dbms_output.put_line(extrn.l_var);
  end;
end;

anonymous block completed
Internal
External



ето понятно
...
end L_name;

L_name кто?

.....
stax
...
Рейтинг: 0 / 0
19.07.2017, 15:37
    #39491687
Maxim Demenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что означает текст в двойных угловых скобках в plsql блоке?
stax..,

Согласен, плюс не причем. Но тем не менее, имя метки не применимо ни к чему.
https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/block_declaration.htm Optionally, when used to label a block, the label_name can also appear at the end of the block without the angle brackets
из чего можно сделать вывод, что если блок не помечен LABEL, то этот же самый LABEL не должен appear at the end of the block without the angle brackets

Regards

Maxim
...
Рейтинг: 0 / 0
19.07.2017, 16:11
    #39491713
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что означает текст в двойных угловых скобках в plsql блоке?
stax..
ето понятно
...
end L_name;

L_name кто?


В анонимном блоке - по ходу никто.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<<extrn>>
declare
  l_var varchar2(200) := 'External';
begin
  <<intrn>>
  declare
    l_var varchar2(200) := 'Internal';
  begin
    dbms_output.put_line(intrn.l_var);
    dbms_output.put_line(extrn.l_var);
  end aaa;
end bbb;

anonymous block completed
Internal
External



Если же pl/sql блок не помечен, а поименован (функция, процедура) - тогда стреляет.
...
Рейтинг: 0 / 0
19.07.2017, 16:28
    #39491728
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что означает текст в двойных угловых скобках в plsql блоке?
andrey_anonymousstax..ето понятно
...
end L_name;

L_name кто?


В анонимном блоке - по ходу никто.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<<extrn>>
declare
  l_var varchar2(200) := 'External';
begin
  <<intrn>>
  declare
    l_var varchar2(200) := 'Internal';
  begin
    dbms_output.put_line(intrn.l_var);
    dbms_output.put_line(extrn.l_var);
  end aaa;
end bbb;

anonymous block completed
Internal
External



Если же pl/sql блок не помечен, а поименован (функция, процедура) - тогда стреляет.

тоесть
Имя блока, к которому применяется END - метка, имя функции, имя процедуры, имя пакета или никто.

ps
раньше считал что блок с меткой уже не анонимный (именован)

.....
stax
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / что означает текст в двойных угловых скобках в plsql блоке? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]