PL/SQL控制结构

原创
2012/09/18 16:44
阅读数 244

    PL/SQL是面向过程的语言,存在针对逻辑的控制语言。主要的逻辑控制语句有IF、IF....ELSE...、IF....ELIF.....、嵌套IF、CASE、LOOP、WHILE...LOOP、FOR...LOOP、CURSOR FOR LOOP。

    一、IF条件控制语句

         IF语句有三种使用方式:IF、IF...ELSE...、IF...ELIF....。这三种方式根据实际的情况灵活选择。

       (1)IF 语法结构:

         IF   condition   THEN  statement;   

         END   IF;

         (2) IF...ELSE...结构语法结构:

         IF  condition THEN  statements ;

         ELSE  statements;

         END IF;

        (3)IF....ELIF....结构

         IF  condition THEN  statements;

         ELIF  condition2 THEN  statements;

          ......

         [ELSE statements;]

         END IF;

        (4) IF嵌套

二、CASE条件控制语句

     CASE条件控制语句可以分为两种类型:

    1)一种是简单的CASE语句。它给出一个表达式,并把表达式结果同提供的几个可以预见的结果做比较,如果比较成功则执行对应的语句序列。

     [<<label_name>>]

     CASE   case_operand

     WHEN  when_operand  THEN statement;

     [WHEN when_operand  THEN statement;]

     [ELSE   statement;]

     END CASE  [label_name]

    说明:<<label_name>>是一个标签,可以选择性添加。如果添加标签,建议在CASE语句结束时也标明该标签,表示结束的是某个CASE语句。

  2)搜索式的CASE语句

     搜索式的CASE语句会依次检查布尔值是否为TRUE,一旦为TRUE,那么它所在的WHEN子句就会被执行,而且它后面的布尔表达式将不被考虑。如果所有的布尔表达式都不为TRUE,那么程序将转到ELSE子句。如果没有ELSE子句,那么系统会给出CASE_NOT_FOUND异常

      [<<label_name>>]

      CASE

      WHEN  boolean_expression  THEN  statement;

       .....

      [ELSE statement;]

      END  CASE  [label_name];


三、LOOP循环控制语句

    LOOP循环语句有四种形式:LOOP、WHILE...LOOP、FOR.....LOOP、CURSOR FOR  LOOP。

   1、基本的LOOP

     该形式的LOOP循环属于LOOP循环控制语句中最基本的结构,它会反复执行LOOP和END LOOP之间的语句序列。用于基本的LOOP语句本身没有包含中断循环的条件,所以通常情况下都是和其他的条件控制语句一起使用,利用EXIT、GOTO等可以中断LOOP循环。

    <<label_name>>

    LOOP

        statement.....;

    END LOOP [label_name];

    基本的LOOP语句需要和条件控制语句一起使用,否则会出现死循环的情况。通常情况下,正常中止循环的方式有以下两种:(1)在循环中使用IF语句与EXIT组合来结束循环,表示当满足某个条件时退出循环体,然后向后执行。EXIT默认是退出当前的循环,如果使用标签,可以退出指定的LOOP循环。

          (2)使用EXIT...WHEN语句来结束循环。这种方式在游标中经常使用。它代表的含义是:当WHEN后面的条件为TRUE时,EXIT会被触发。如果EXIT后面不加LOOP循环,则表示中止当前的循环。例如: EXIT basic_loop WHEN v_num>5;

 

2、WHILE...LOOP循环

     WHILE...LOOP结构的语句本身可以终止LOOP循环,当WHILE后面的布尔表达式为TRUE时,LOOP和END LOOP之间的语句集将执行一次,而后重新判断WHILE后面的表达式是否为TRUE。语法结构如下:

   [<<label_name>>]

   WHILE boolean_expression

   LOOP

        statement;

   END LOOP [label_name];

      说明:语法中的boolean_expression是一个布尔表达式,只要当表达式为TRUE的时候,statement部分才能得到执行。


3、FOR...LOOP

     FOR...LOOP语句循环遍历指定范围内的整数。FOR...LOOP循环的语法结构如下:

     [<<label_name>>]

      FOR  index_name IN  [REVERSE]  lower_bound .. upper_bound

      LOOP 

            statement;

      END LOOP [label_name];

    说明:index_name为循环计数器,注意不能为其赋值。REVERSE:该项指定循环的方式,默认的是由下标到上标,如果使用REVERSE关键字,则循环方式相反,将从上标到下标。

    下标和上标之间需要使用“..”连接。



展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部