目次
1.FORループ
FOR 循环变量 IN 循环下限..循环上线 LOOP
-- 循环变量可以用任意的字母或者单词去替代
循环执行的逻辑题
END LOOP;
1~100までの累積値を計算します。
DECLARE
V_TEXT VARCHAR2(1000):='';
BEGIN
FOR X IN 1..10 LOOP
V_TEXT:=V_TEXT || 'O_0 ';
DBMS_OUTPUT.put_line(V_TEXT);
END LOOP;
END;
-- FOR ループに関する注意:
1. ループ変数はループ本体内でのみ参照可能
2. ループ変数には毎サイクル IN の上限値と下限値の間の値のみを代入でき、他のワードを使用して再代入することはできない 3. ワードの欠落はでき
ないループ本体の中央。ループを検証したい場合は、それらに NULL を追加できます。
BEGIN
FOR X IN 1..20 LOOP
NULL;
END LOOP;
END;
-- LOOPループ
DECLARE
V_SUM NUMBER:=0;
BEGIN
LOOP
V_SUM:=V_SUM+1;
dbms_output.put_line(V_SUM);
EXIT WHEN V_SUM=5;
-- 如果这里不设定跳出循环条件,会陷入死循环
dbms_output.put_line(V_SUM);
END LOOP;
END;
-- WHILE ループ
DECLARE
V_SUM NUMBER:=0;
BEGIN
WHILE V_SUM < 20 LOOP
DBMS_OUTPUT.PUT_LINE(V_SUM);
V_SUM:=V_SUM+1;
END LOOP;
END;
-- 要約:
3 種類のループ:
-- FOR ループ、ループ変数が下限値と上限値の間にあり、反復され、最後に上限値に達するとループが終了します。
-- LOOP ループは、ループから抜け出す条件が整うまで無限にループし、条件が整わない場合は無限ループに陥ります。
-- While ループでは、要件を満たす条件を設定してからループに入る必要があり、条件が設定されていないと無限ループに陥りやすくなります。
チップ:
* ステートメントがループ内で少なくとも 1 回実行される場合は、通常 LOOP が使用されます
* 繰り返すたびに条件をテストする必要がある場合は、通常、while が使用されます *
繰り返しの回数が既知の場合は、通常、FOR ループが使用されます。
ループから抜け出す命令
CONTINUE: CONTINUE ステートメントを使用して、現在のループの反復をスキップし、次のループの実行を継続します。
DECLARE
i NUMBER := 1;
BEGIN
FOR i IN 1..5 LOOP
IF i = 3 THEN
CONTINUE;
END IF;
DBMS_OUTPUT.PUT_LINE('i = ' || i);
END LOOP;
END;
EXIT: EXIT ステートメントを使用してループを直ちに終了します。
DECLARE
i NUMBER := 1;
BEGIN
FOR i IN 1..5 LOOP
IF i = 3 THEN
CONTINUE;
END IF;
DBMS_OUTPUT.PUT_LINE('i = ' || i);
END LOOP;
END;