oracle循环语句Loop

  循环语句

① LOOP循环(基本循环)

LOOP 

.......

END LOOP;

两种退出方式:IF.....EXIT        EXIT.....WHEN.......

例如:

DECLARE

x number:=0 ;

BEGIN

LOOP

IF x>=3 THEN

EXIT;

END IF;

x:=x+1;

DBMS_OUTPUT.PUT_LINE('循环内部x的值为:'||x);

END LOOP;

DBMS_OUTPUT.PUT_LINE('循环外部x的值为:'||x);

END;

 

其中,

 

IF x>=3 THEN EXIT;

END IF;

<==> EXIT WHEN x>=3;

 

 

② WHILE循环:

WHILE expression LOOP

.........

END LOOP;

 

 

        例如:

DECLARE

x number:=0 ;

BEGIN

WHILE x<=3 LOOP

x:=x+1;

DBMS_OUTPUT.PUT_LINE('循环内部x的值为:'||x);

END LOOP;

DBMS_OUTPUT.PUT_LINE('循环外部x的值为:'||x);

END;

 

③ FOR循环:

FOR counter IN[REVERSE] start_value ..end_value LOOP

...............

END LOOP;

FOR循环内的计数器不需要申明,计数器默认为递增,加REVERSE后为递减

 

例如:

BEGIN

FOR i IN 1..5 LOOP   --计数器 未显示申明,i为number类型

DBMS_OUTPUT.PUT_LINE('i='||i);

END LOOP;

END;

 

输出:1 2 3 4 5

蓝色部分改成FOR i IN REVERSE 1..5 LOOP,输出 5 4 3 2 1

FOR循环的步长只能是1-1,不能是其他值,并且循环内部不能对计数器赋值, start_valueend_value可以是变量

例如,下面这段代码试图在循环内部对计数器赋值,结果出现“必须申明标识符I”

BEGIN
  FOR counter IN 1..5 LOOP
  DBMS_OUTPUT.PUT_LINE(counter);
  i:=i+1;
  END LOOP;
  END;

 

④ 标记+GOTO实现循环

标记名用<<>>括起来,不是书名号

 

例如:

DECLARE

i NUMBER:=0;

BEGIN

<<repeat_loop>>

i:=i+1;

DBMS_OUTPUT.PUT_LINE('i的值为:'||i);

IF i<=3 THEN

GOTO repeat_loop;

END IF;

END;

注意:使用循环时注意不要产生死循环,循环嵌套时可使用标签清晰的指明跳出那一级循环。

(转载请注明出处:[url=http://www.live588.org]淘金盈[/url])

猜你喜欢

转载自hcty31.iteye.com/blog/1471271