PL / SQL Что означает <<word>> - PullRequest
       0

PL / SQL Что означает <<word>>

7 голосов
/ 30 января 2012

Что означает слово в двойных угловых скобках в PL / SQL, например. <<word>>

Я пытался выполнить поиск в Google, но Google пропускает пунктуацию.

Для чего он используется?

Ответы [ 2 ]

2 голосов
/ 10 августа 2015

Как упоминалось в комментариях к вопросу, это используется для обозначения составных операторов, а также в качестве цели для GOTO. Вы можете использовать метку в END и END LOOP, которая может быть отличной для удобочитаемости, например <<countdown>> for i in 1.9 loop blah; end loop countdown;

Вот пример:

set echo on
set serveroutput on

<<begin_end_block>> 
declare 
  msg varchar2(1000);
begin
  dbms_output.enable;
  msg := chr(9) || 'start';
  <<loopblk>> 
  for itr8 in 1 .. 5
  loop
    msg := msg || chr(10) || chr (9) ||  'loop';
    dbms_output.put_line ('Iterator is ' || itr8);
    <<ifblck>> if itr8 > 2
    then
      msg := msg || chr(10) || chr(9) || 'greater than 2';
      goto gototarg;
    end if;
    exit loopblk when mod (itr8, 4) = 0;
    continue loopblk;
    <<gototarg>>
    dbms_output.put_line ('after goto target');
  end loop loopblk;
  dbms_output.put_line ('Ending, here are the messages' || chr(10) || msg);
end begin_end_block;
/

вывод:

anonymous block completed
Iterator is 1
Iterator is 2
Iterator is 3
after goto target
Iterator is 4
after goto target
Iterator is 5
after goto target
Ending, here are the messages
    start
    loop
    loop
    loop
    greater than 2
    loop
    greater than 2
    loop
    greater than 2
0 голосов
/ 08 июля 2014

Синтаксис <> предназначен для именования циклов.Полезно, когда у вас есть вложенные циклы, и вам нужно использовать синтаксис EXIT loop_name WHEN ..., чтобы контролировать выход из цикла.

См. http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/controlstructures.htm#BABJCCFJ для примера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...