Oracle的循环控制

1.条件

  1)IF条件判断逻辑结构
  If条件判断逻辑结构有三种表达方式。
  ①表达式一:
IF Condition  THEN
  Statement;
END  IF;

  该表达式的功能为:若条件为真,执行then后的语句;否则,跳出条件语句执行end if后的语句。
  ②表达式二:
IF Condition  THEN
  Statements_1;
ELSE
  Statements_2;
END  IF;

  该表达式的功能为:如果条件为真执行then后的语句,否则执行else后的语句。
  ③表达式三:
IF Condition1  THEN
  Statements_1;
ELSEIF Condition2  THEN
  Statements_2;
ELSE
  Statements_3;
END  IF;

  该表达式的功能为:如果if后的条件成立,执行then后面的语句,否则判断elseif后面的条件,条件成立执行第二个then后面的语句,否则执行else后的语句。这是条件语句嵌套。IF 可以嵌套,可以在IF 或IF ..ELSE语句中使用IF或IF…ELSE语句。

   2)CASE表达式
  CASE语句的基本格式如下:
CASE Grade
   WHEN  ' A '  THEN DBMS_OUTPUT.PUT_LINE ( ' Excellent ');
   WHEN  ' B '  THEN DBMS_OUTPUT.PUT_LINE ( ' Very Good ');
   WHEN  ' C '  THEN DBMS_OUTPUT.PUT_LINE ( ' Good ');
   WHEN  ' D '  THEN DBMS_OUTPUT.PUT_LINE ( ' Fair ');
   WHEN  ' F '  THEN DBMS_OUTPUT.PUT_LINE ( ' Poor ');
   ELSE DBMS_OUTPUT.PUT_LINE ( ' No such grade ');
END  CASE;

  CASE语句的功能:首先设定变量的值作为条件,然后顺序检查表达式,一旦从中找到与条件匹配的表达式值,就停止CASE语句的处理。

2.循环

  1)LOOP…EXIT…END循环控制语句
  LOOP循环语句是其中最基本的一种,格式如下:
LOOP
  Statements;
END LOOP;

  这种循环语句是没有终止的,如果不人为控制的话,其中的Statements将会无限地执行。一般可以通过加入EXIT语句来终结该循环。

   2)WHILE…LOOP循环控制语句
  WHILE…LOOP循环控制语句的格式如下:
WHILE Condition
LOOP
  Statements;
END LOOP;

  WHILE…LOOP有一个条件与循环相联系,如果条件为TRUE,则执行循环体内的语句,如果结果为FALSE,则结束循环。

   3)FOR…LOOP循环控制语句
  FOR…LOOP循环控制语句的格式如下:
FOR Counter  IN  [ REVERSE ] Start_Range…End_Range
LOOP
  Statements;
END LOOP;

  LOOP和WHILE循环的循环次数都是不确定的,FOR循环的循环次数是固定的,Counter是一个隐式声明的变量,初始值是Start_Range,第二个值是Start_Range + 1,直到End_Range,如果Start_Range等于End _Range,那么循环将执行一次。如果使用了REVERSE关键字,那么范围将是一个降序。

3.跳转
  GOTO语句的格式如下:
    GOTO LABEL;
  执行GOTO语句时,控制会立即转到由标签标记的语句(使用<<>>声明)。PL/SQL中对GOTO语句有一些限制,对于块、循环、IF语句而言,从外层跳转到内层是非法的。
DECLARE
  X          NUMBER( 3);
  Y          NUMBER( 3);
  V_COUNTER  NUMBER( 2);
BEGIN
  X : =  100;
   FOR V_COUNTER  IN  1 ..  10 LOOP
     IF V_COUNTER  =  4  THEN
       GOTO end_of_loop;
     END  IF;
    X : = X  +  10;
   END LOOP;
   <<end_of_loop >>
  Y : = X;
  dbms_output.put_line( ' Y: ' ||Y);
END;

  输出结果为“Y:130”。

4.嵌套
  程序块的内部可以有另一个程序块这种情况称为嵌套。嵌套要注意的是变量,定义在最外部程序块中的变量可以在所有子块中使用,如果在子块中定义了与外部程序块变量相同的变量名,在执行子块时将使用子块中定义的变量。子块中定义的变量不能被父块引用。同样GOTO语句不能由父块跳转道子块中,反之则是合法的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值