读书人

oracle循环话语Loop

发布时间: 2012-08-14 10:39:58 作者: rapoo

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?未显示申明,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_value和end_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])

?

读书人网 >其他数据库

热点推荐