Цикл в процедуре oracle

Mikhail Aleksandrovich

Member []

:

: 74

,

select

Tax_Payer_Number,

First_Name,

Last_Name

From revenue_office

where First_name = ‘Bob’ and Tax_Payer_Number = 123456789;

Tax_Payer_Number , tax_payer_numbers.

revenue_office Tax_Payer_Number tax_payer_numbers.

select

Tax_Payer_Number,

First_Name,

Last_Name

From revenue_office

where First_name = ‘Bob’ and Tax_Payer_Number in (Tax_Payer_Number from tax_payer_numbers);

.

Tax_Payer_Number ?

Serguei

Member

: Papua New Guinea

: 713

Mikhail Aleksandrovich
,

select

Tax_Payer_Number,

First_Name,

Last_Name

From revenue_office

where First_name = ‘Bob’ and Tax_Payer_Number = 123456789;

Tax_Payer_Number , tax_payer_numbers.

revenue_office Tax_Payer_Number tax_payer_numbers.

select

Tax_Payer_Number,

First_Name,

Last_Name

From revenue_office

where First_name = ‘Bob’ and Tax_Payer_Number in (Tax_Payer_Number from tax_payer_numbers);

.

Tax_Payer_Number ?

. . join:

select r.Tax_Payer_Number, r.First_Name, r.Last_Name From revenue_office r,tax_payer_numbers t where r.First_name = ‘Bob’ and r.Tax_Payer_Number=r.Tax_Payer_Number ; =

PS , select

(

select Tax_Payer_Number from tax_payer_numbers)

Serguei

Member

: Papua New Guinea

: 713

select r.Tax_Payer_Number, r.First_Name, r.Last_Name From revenue_office r,tax_payer_numbers t where r.First_name = ‘Bob’ and r.Tax_Payer_Number=t.Tax_Payer_Number ;

Guest

Mikhail Aleksandrovich
Serguei,

SQL Oracle?

, . .

.

suPPLer

Member

: ,

: 7794

Mikhail Aleksandrovich,

, , . , .

Mikhail Aleksandrovich

Member []

:

: 74

suPPLer,

SELECT

max(table3.field2) field2,

table2.field1 field1,

(avg(table1.field3*Table2.field3)) correlation,

avg(table3.field3) field3

FROM

maintable table1

LEFT JOIN maintable Table2

ON Table1.field2 = Table2.field2,

maintable table4

left join maintable Table3

on table4.field1=table3.field1 and table4.field2 =table3.field2

where table3.field2 = number1 and table2.field1= number2

and table4.field1= table1.field1 and table1.field1 in (select table1.field1

from maintable table1

left JOIN maintable Table2

ON Table1.field4 + 11 > Table2.field4 and Table1.field4 <= Table2.field4

AND Table1.field2 = Table2.field2 and Table1.field1<> Table2.field1

where table1.field2 = number1 and table2.field1= number2

group by table1.field1)

group by table1.field1, table2.field1;

, table2.field1 1 100000. number2 1 100000

table2.field1 in (1,2,3,4,5,…,100000) )))

suPPLer

Member

: ,

: 7794

Mikhail Aleksandrovich,

pivot – 1 100000.

Serguei

Member

: Papua New Guinea

: 713

Mikhail Aleksandrovich
suPPLer,

. -.

… )))

PL SQL :

SQL , .

. table:

For cur in (select * from table) loop begin — — insert into log_table (rec, Column1) values (sys, cur.column1); commit; end; end loop; sql – , SQL.

))

Serguei

Member

: Papua New Guinea

: 713

Mikhail Aleksandrovich
, .

… , …

bigsov

Member

:

: 282

src , … SELECT MAX (table3.field2) field2, table2.field1 field1, (AVG (table1.field3 * table2.field3)) correlation, AVG (table3.field3) field3 FROM maintable table1 LEFT JOIN maintable table2 ON table1.field2 = table2.field2 , maintable table4 LEFT JOIN maintable table3 ON table4.field1 = table3.field1 AND table4.field2 = table3.field2 WHERE table3.field2 = number1 AND table2.field1 = number2 AND table4.field1 = table1.field1 AND table1.field1 IN ( SELECT table1.field1 FROM maintable table1 LEFT JOIN maintable table2 ON table1.field4 + 11 > table2.field4 AND table1.field4 <= table2.field4 AND table1.field2 = table2.field2 AND table1.field1 <> table2.field1 WHERE table1.field2 = number1 AND table2.field1 = number2 GROUP BY table1.field1) GROUP BY table1.field1, table2.field1;

table2.field1= number2, .. … , – :

for n 1 100000 do

table3.field2 … …

, :

1. :

begin for i in (select Tax_Payer_Number from tax_payer_numbers) loop — i.Tax_Payer_Number— dbms_output.put_line(i.Tax_Payer_Number); end loop; end;

2.

table2.field1 in (1,2,3,4,5,…,100000) )))

:

table2.field1 in (select level l from dual connect by level<=100000) ?

Mikhail Aleksandrovich

Member []

:

: 74

bigsov,

number1 number2 , . number 1 number2 0,2 , .

1000 , number2 ?

, table2.field1 in (1,2,3,4,…,1000) sql , , .

1.

begin for i in(select field1 from maintable where field2 = number1) loop SELECT MAX (table3.field2) field2, table2.field1 field1, (AVG (table1.field3 * table2.field3)) correlation, AVG (table3.field3) field3 FROM maintable table1 LEFT JOIN maintable table2 ON table1.field2 = table2.field2 , maintable table4 LEFT JOIN maintable table3 ON table4.field1 = table3.field1 AND table4.field2 = table3.field2 WHERE table3.field2 = number1 AND table2.field1 = i.field1 AND table4.field1 = table1.field1 AND table1.field1 IN ( SELECT table1.field1 FROM maintable table1 LEFT JOIN maintable table2 ON table1.field4 + 11 > table2.field4 AND table1.field4 <= table2.field4 AND table1.field2 = table2.field2 AND table1.field1 <> table2.field1 WHERE table1.field2 = number1 AND table2.field1 = i.field1 GROUP BY table1.field1) GROUP BY table1.field1, table2.field1; end loop; end;

oracle 2 :

Error starting at line 1 in command:

begin ….

Error report:

ORA-06550: line 3, column 1:

PLS-00428: an INTO clause is expected in this SELECT ement

06550. 00000 – “line %s, column %s:n%s”

*Cause: Usually a PL/SQL compilation error.

*Action:

2.

table2.field1 in (select level l from dual connect by level<=100000)

100, table2.field1

bigsov

Member

:

: 282

Mikhail Aleksandrovich

racle 2 :

Error starting at line 1 in command:

begin ….

Error report:

ORA-06550: line 3, column 1:

PLS-00428: an INTO clause is expected in this SELECT ement

06550. 00000 – “line %s, column %s:n%s”

*Cause: Usually a PL/SQL compilation error.

*Action:

PLS-00428: an INTO clause is expected in this SELECT ement select . – ( ). insert select… : PLSQL

: Performing SQL Operations from PL/SQL

Mikhail Aleksandrovich
bigsov,

2.

table2.field1 in (select level l from dual connect by level<=100000)

100, table2.field1

… , – () . table2.field1, GROUP BY table1.field1, table2.field1? ?

… , , … , , … – …

Mikhail Aleksandrovich

Member []

:

: 74

bigsov,

:

1. , , , , . :

begin FOR i IN 1..100000 LOOP INSERT INTO table_1 — end loop; end;

2. , ( i) .

, , , .

P.S. ( )

AI

Member

:

: 2817

Mikhail Aleksandrovich
bigsov,

:

1. , , , , . :

begin FOR i IN 1..100000 LOOP INSERT INTO table_1 — end loop; end;

2. , ( i) .

, , , .

P.S. ( )

200 ” ” 6 ( , !). 0.02, 96 .

bigsov

Member

:

: 282

Mikhail Aleksandrovich
AI,

?

… … 100000 5 (0,2*100/3600)… ?

, , , , sql-…

Mikhail Aleksandrovich

Member []

:

: 74

bigsov,

.

begin FOR i IN 1..100000 table2.field1 2, , 4378 67589.

, 100000 ?

bigsov

Member

:

: 282

, table2.field1, pl/sql: for i in (select distinct field1 from table2) loop
Serguei

Member

: Papua New Guinea

: 713

1) , . , . , . . , 😉

2) , SQL.

aZm

Member

: 3

: 2355

, , , , …

Источник

На сегодня вы уже многое знаете о PL/SQL. Но очень многое еще впереди. Как и во всех языках программирования, в PL/SQL имеются операторы циклов. Их три основных типа:

  1. Безусловные циклы (выполняемые бесконечно)
  2. Интерактивные циклы (FOR)
  3. Условные циклы (WHILE)

Самый простой тип цикла в языке PL/SQL таков:

LOOP NULL; END LOOP /

Но использовать такой цикл нет смысла, да и для экземпляра БД это не безопасно. Для этого необходимо использовать определенные пути выхода из циклов. Их то же три:

  1. EXIT – Безусловный выход из цикла. Используется посредством применения оператора IF.
  2. EXIT WHEN – Выход при выполнении условия.
  3. GOTO – Выход из цикла во внешний контекст.

Давайте рассмотрим пример с применением цикла LOOP EXIT WHEN. Запишем следующее:

DECLARE i NUMBER := 0; BEGIN LOOP — start loop 1 i := i + 1; IF (i >= 100) THEN i := 0; EXIT; — exit when i >= 0 END IF; END LOOP; — end loop 1 LOOP — start loop 2 i := i + 1; EXIT WHEN (i >= 100); — exit when i >= 0 END LOOP; — end loop 2——– END; /

Получаем после исполнения:

SQL> DECLARE 2 i NUMBER := 0; 3 4 BEGIN 5 6 LOOP 7 i := i + 1; 8 IF (i >= 100) THEN 9 i := 0; 10 EXIT; 11 END IF; 12 END LOOP; 13 14 LOOP 15 i := i + 1; 16 EXIT WHEN (i >= 100); 17 END LOOP; 18 19 END; 20 / Процедура PL/SQL успешно завершена.

Видимых действий не было, но и ошибок то же! Первый цикл закончился после того как i стало равно 10. При этом оно получило значение 0 и произошел выход из цикла. Второй цикл применил вложенное предложение EXIT WHEN, что является более верным его использованием синтаксически. Тем не менее, применение условных операторов предполагает перед выходом из цикла проделать некоторые действия. Цикл LOOP EXIT WHEN END LOOP в последующем будет самым, часто используемым при построении конструкций курсоров. Рассмотрим еще одну разновидность вышеприведенного цикла:

DECLARE k NUMBER := 0; BEGIN WHILE (k < 10) LOOP k := k + 1; END LOOP; END; /

Получаем:

SQL> DECLARE 2 k NUMBER := 0; 3 4 BEGIN 5 6 WHILE (k < 10) LOOP 7 k := k + 1; 8 END LOOP; 9 10 END; 11 / Процедура PL/SQL успешно завершена.

Здесь в отличие от предыдущего цикла, действия выполняются до тех пор пока условие истинно. Если условие ложно, то цикл прекращается. Что хорошо видно из приведенного примера. В PL/SQL в конструкциях циклов нет такого, иногда полезного, оператора как CONTINUE, вследствие того, что выражение CONTINUE зарезервировано языком PL/SQL и используется для других целей. Но такую конструкцию как CONTINUE можно эмулировать, применив цикл вида LOOP EXIT WHEN END LOOP и используя весьма не популярный, но в данном случае очень полезный оператор GOTO!

Запишем следующее, выведем все нечетные числа до 20:

SET SERVEROUTPUT ON DECLARE s NUMBER := 0; BEGIN DBMS_OUTPUT.enable; LOOP IF(MOD(s, 2) = 1) THEN GOTO LESS; END IF; DBMS_OUTPUT.put_line(TO_CHAR(s)||’ is even!’); <<LESS>> EXIT WHEN (s = 20); s := s + 1; END LOOP; END; /

Получаем:

SQL> SET SERVEROUTPUT ON SQL> DECLARE 2 s NUMBER := 0; 3 4 BEGIN 5 6 DBMS_OUTPUT.enable; 7 8 LOOP 9 IF(MOD(s, 2) = 1) THEN 10 GOTO LESS; 11 END IF; 12 DBMS_OUTPUT.put_line(TO_CHAR(s)||’ is even!’); 13 <<LESS>> 14 EXIT WHEN (s = 20); 15 s := s + 1; 16 END LOOP; 17 18 END; 19 / 0 is even! 2 is even! 4 is even! 6 is even! 8 is even! 10 is even! 12 is even! 14 is even! 16 is even! 18 is even! 20 is even! 0 is even! 2 is even! 4 is even! 6 is even! 8 is even! 10 is even! 12 is even! 14 is even! 16 is even! 18 is even! 20 is even! Процедура PL/SQL успешно завершена.

В результате применения GOTO в теле цикла получаем не сложную и понятную логику работы. Теперь давайте рассмотрим, не менее полезный и очень популярный в PL/SQL цикл FOR. Он к стати очень удобен при работе с курсорами, но об этом чуть позднее. Запишем следующее:

BEGIN FOR i IN 1..100 LOOP NULL; END LOOP; END; / SQL> BEGIN 2 FOR i IN 1..100 LOOP 3 NULL; 4 END LOOP; 5 END; 6 / Процедура PL/SQL успешно завершена.

В данный момент FOR успешно ничего не делал аж сто раз! Итак, давайте рассмотрим его чуть ближе, IN как и в операторе SELECT задает диапазон значений итерации цикла, а “..” это как вы помните так называемый “оператор диапазона”! Вот так просто и ясно. Остальное уже знакомо. Замечу так же, что переменная цикла i является переменной только для чтения. По этому шаг цикла FOR изменить принудительно нельзя! Если это необходимо, то лучше применять цикл вида LOOP EXIT WHEN END LOOP! 🙂 Теперь давайте поработаем с числами:

DECLARE s NUMBER := 0; BEGIN DBMS_OUTPUT.enable; FOR i IN 1..20 LOOP IF(MOD(i, 2) = 1) THEN DBMS_OUTPUT.put_line(TO_CHAR(i)||’ is even!’); s := i; END IF; END LOOP; DBMS_OUTPUT.put_line(‘last odd number was ‘||TO_CHAR(s)); END; /

Получаем:

SQL> DECLARE 2 s NUMBER := 0; 3 4 BEGIN 5 DBMS_OUTPUT.enable; 6 FOR i IN 1..20 LOOP 7 IF(MOD(i, 2) = 1) THEN 8 DBMS_OUTPUT.put_line(TO_CHAR(i)||’ is even!’); 9 s := i; 10 END IF; 11 END LOOP; 12 DBMS_OUTPUT.put_line(‘last odd number was ‘||TO_CHAR(s)); 13 END; 14 / 1 is even! 3 is even! 5 is even! 7 is even! 9 is even! 11 is even! 13 is even! 15 is even! 17 is even! 19 is even! last odd number was 19 Процедура PL/SQL успешно завершена.

Та же задачка, только с циклом FOR. Да, функция MOD возвращает остаток от деления чисел, как вы, наверное, уже догадались. Так же в операторе FOR есть возможность задавать обратный отсчет, ну, например, перед стартом или взрывом! 🙂 Вот так:

BEGIN DBMS_OUTPUT.enable; FOR i IN REVERSE 1..10 LOOP DBMS_OUTPUT.put_line(TO_CHAR(i)||’-‘); END LOOP; DBMS_OUTPUT.put_line(‘Blastoff!’); END; /

Получаем:

SQL> BEGIN 2 DBMS_OUTPUT.enable; 3 FOR i IN REVERSE 1..10 LOOP 4 DBMS_OUTPUT.put_line(TO_CHAR(i)||’-‘); 5 END LOOP; 6 DBMS_OUTPUT.put_line(‘Blastoff!’); 7 END; 8 / 10- 9- 8- 7- 6- 5- 4- 3- 2- 1- Blastoff! Процедура PL/SQL успешно завершена.

Нолика не было, но бабахнуло! Вот такой достаточно богатый набор операторов циклов в языке PL/SQL! Надеюсь, вы научитесь с легкостью их применять при построении серверных приложений ваших БД! 🙂

Источник

gg_75

Guest

. procedure(data,client)

data –

client – char

, . ?

SQLap

Member []

:

: 34063

gg_75, select round(last_day(sys) – trunc(sys, ‘MON’) + 1) into d from dual; for c in 1..d loop … end loop;

Member

: from dual

: 148

declare begin for i in reverse 0..ct(day from last_day(sys))-1 loop dbms_output.put_line(to_(last_day(sys)-i)); end loop; end;
gg_75

Guest

2009 ,

for c in 1..31 loop

select acc_code+ ‘c’ from fa_accounts

get_clients_(to_(‘200901’+c,’YYYYMMDD’),’01’)

end loop;

?

Jannny

Member

:

: 6424

, …

“+” – “||”

? – ?

gg_75

Guest

select round(last_day(sys) – trunc(sys, ‘MON’) + 1) into d from dual;

for c in 1..d loop

get_clients_(c,’01’);

end loop;

dmidek

Member

: –

: 119733

gg_75

select round(last_day(sys) – trunc(sys, ‘MON’) + 1) into d from dual;

for c in 1..d loop

get_clients_(c,’01’);

end loop;

?

, d 🙂

declare d number;

Jannny

Member

:

: 6424

“!”?

: , ?

SQLap

Member []

:

: 34063

)

, , for c in 1..round(last_day(sys) – trunc(sys, ‘MON’) + 1) loop … end loop;

SQLap

Member []

:

: 34063

stax..

Guest

gg_75, declare d ; d_b ; procedure p(dat ,client_id int) is begin dbms_output.put_line(dat||’ ‘||client_id); end; begin d_b:=to_(’01/2009′,’mm/yyyy’); d:=d_b; for i in 1..last_day(d_b)-d_b+1 loop p(d,1); d:=d+1; end loop; end; / …..

stax

aZm

Member

: 3

: 2355

declare v ; begin v:=sys; — . for cc in (select trunc(v,’mm’)+rownum-1 dt from dual connect by rownum<add_months(trunc(v,’mm’),1)-trunc(v,’mm’)+1) loop dbms_output.put_line(to_char(cc.dt,’dd.mm.yyyy’)); end loop; end;

: 8 09, 14:39

stax..

Guest

aZm
declare v ; begin v:=sys; — . for cc in (select trunc(v,’mm’)+rownum-1 dt from dual connect by rownum<add_months(trunc(v,’mm’),1)-trunc(v,’mm’)+1) loop dbms_output.put_line(to_char(cc.dt,’dd.mm.yyyy’)); end loop; end;

Ceterum censeo NATO esse delendam!

racle9i Enterprise Edition Release 9.2.0.6.0 – Production SQL> declare 2 v ; 3 begin 4 v:=sys; — . 5 for cc in (select trunc(v,’mm’)+rownum-1 dt 6 from dual 7 connect by rownum<add_months(trunc(v,’mm’),1)-trunc(v,’mm’)+1) 8 loop 9 dbms_output.put_line(to_char(cc.dt,’dd.mm.yyyy’)); 10 end loop; 11 end; 12 / 01.05.2009 PL/SQL procedure successfully completed.

……

stax

: 8 09, 14:40

aZm

Member

: 3

: 2355

stax..
aZm
declare v ; begin v:=sys; — . for cc in (select trunc(v,’mm’)+rownum-1 dt from dual connect by rownum<add_months(trunc(v,’mm’),1)-trunc(v,’mm’)+1) loop dbms_output.put_line(to_char(cc.dt,’dd.mm.yyyy’)); end loop; end;

[src oracle]

racle9i Enterprise Edition Release >>>9.2.0.6.0<<< – Production

SQL> declare

2 v ;

3 begin

4 v:=sys; — .

5 for cc in (select trunc(v,’mm’)+rownum-1 dt

6 from dual

7 connect by rownum<add_months(trunc(v,’mm’),1)-trunc(v,’mm’)+1)

8 loop

9 dbms_output.put_line(to_char(cc.dt,’dd.mm.yyyy’));

10 end loop;

11 end;

12 /

01.05.2009

PL/SQL procedure successfully completed.

…..

stax

10.2.0.4 😉 9.2.0.8 – .

: 8 09, 14:40

aZm

Member

: 3

: 2355

🙂

9 sql plsql . plsql 9. open for .

: 8 09, 14:38

dmidek

Member

: –

: 119733

aZm
🙂

9 sql plsql . plsql 9. open for .

, – ,

select ….. from ( )

stax..

Guest

dmidek
aZm
🙂

9 sql plsql . plsql 9. open for .

, – ,

select ….. from ( )

13-

…..

stax

Member

:

: 312

, – , for-? …

PROCEDURE for_Each_Day (p__In_Month , p_Client VARCHAR2) IS v_Cur_ := trunc (p_Day_In_Month, ‘mm’); BEGIN WHILE v_Cur_ <= last_Day (p__In_Month) LOOP get_Clients_ (v_Cur_, p_Client); v_Cur_ := v_Cur_ + 1; END LOOP; END;

aZm

Member

: 3

: 2355

stax..

13-

…..

stax

,

11 , 13 🙂

dmidek

Member

: –

: 119733

stax..
dmidek
aZm
🙂

9 sql plsql . plsql 9. open for .

, – ,

select ….. from ( )

13-

…..

stax

, ,

CONNECT BY PRIOR –

, …

– ,

stax..

Guest

, – , for-? …

PROCEDURE for_Each_Day (p__In_Month , p_Client VARCHAR2) IS v_Cur_ := trunc (p_Day_In_Month, ‘mm’); BEGIN WHILE v_Cur_ <= last_Day (p__In_Month) LOOP get_Clients_ (v_Cur_, p_Client); v_Cur_ := v_Cur_ + 1; END LOOP; END;

v_Cur_ := v_Cur_ + 1;

( -)

…..

stax

stax..

Guest

aZm
stax..

13-

…..

stax

,

11 , 13 🙂

//////

stax

Источник

В этой главе мы обсудим циклы в PL / SQL. Может возникнуть ситуация, когда вам нужно выполнить блок кода несколько раз. В общем случае операторы выполняются последовательно: первый оператор в функции выполняется первым, затем второй и так далее.

Языки программирования предоставляют различные управляющие структуры, которые допускают более сложные пути выполнения.

Оператор цикла позволяет нам выполнять оператор или группу операторов несколько раз, и в большинстве языков программирования ниже приводится общая форма инструкции цикла.

PL / SQL предоставляет следующие типы циклов для обработки требований циклов. Нажмите на следующие ссылки, чтобы проверить их детали.

S.NoТип и описание петли
1PL / SQL Basic LOOP

В этой структуре цикла последовательность операторов заключена между операторами LOOP и END LOOP. На каждой итерации выполняется последовательность операторов, а затем управление возобновляется в верхней части цикла.

2PL / SQL WHILE LOOP

Повторяет оператор или группу операторов, пока данное условие выполняется. Он проверяет условие перед выполнением тела цикла.

3PL / SQL FOR LOOP

Выполнить последовательность операторов несколько раз и сократить код, который управляет переменной цикла.

4Вложенные циклы в PL / SQL

Вы можете использовать один или несколько циклов внутри любого другого базового цикла, в то время как или для цикла.

В этой структуре цикла последовательность операторов заключена между операторами LOOP и END LOOP. На каждой итерации выполняется последовательность операторов, а затем управление возобновляется в верхней части цикла.

Повторяет оператор или группу операторов, пока данное условие выполняется. Он проверяет условие перед выполнением тела цикла.

Выполнить последовательность операторов несколько раз и сократить код, который управляет переменной цикла.

Вы можете использовать один или несколько циклов внутри любого другого базового цикла, в то время как или для цикла.

Маркировка цикла PL / SQL

Циклы PL / SQL могут быть помечены. Метка должна быть заключена в двойные угловые скобки (<< и >>) и указываться в начале оператора LOOP. Имя метки также может отображаться в конце оператора LOOP. Вы можете использовать метку в операторе EXIT для выхода из цикла.

Следующая программа иллюстрирует концепцию –

DECLARE i number(1); j number(1); BEGIN << outer_loop >> FOR i IN 1..3 LOOP << inner_loop >> FOR j IN 1..3 LOOP dbms_output.put_line(‘i is: ‘|| i || ‘ and j is: ‘ || j); END loop inner_loop; END loop outer_loop; END; /

Когда приведенный выше код выполняется в командной строке SQL, он дает следующий результат –

i is: 1 and j is: 1 i is: 1 and j is: 2 i is: 1 and j is: 3 i is: 2 and j is: 1 i is: 2 and j is: 2 i is: 2 and j is: 3 i is: 3 and j is: 1 i is: 3 and j is: 2 i is: 3 and j is: 3 PL/SQL procedure successfully completed.

Операторы управления циклом

Операторы управления циклом изменяют выполнение от его нормальной последовательности. Когда выполнение покидает область действия, все автоматические объекты, созданные в этой области, уничтожаются.

PL / SQL поддерживает следующие операторы управления. Маркировка петель также помогает вывести контроль за пределы петли. Нажмите на следующие ссылки, чтобы проверить их детали.

Оператор Exit завершает цикл, и управление передается оператору сразу после END LOOP.

Заставляет петлю пропускать оставшуюся часть своего тела и немедленно проверять свое состояние перед повторением.

Передает управление помеченному выражению. Хотя не рекомендуется использовать оператор GOTO в вашей программе.

Источник

Читайте также:  Менструальный цикл что происходит