首页 > 代码库 > PL/SQL之--流程控制语句

PL/SQL之--流程控制语句

一、简介

  像编程语言一样,oracle PL/SQL也有自己的流程控制语句。通过流程控制语句,我们可以在PL/SQL中实现一下比较复杂的业务逻辑操作。而无需到程序中去控制,在一定程度上提高了效率,这也是PL/SQL的强大之处。PL/SQL流程控制语句有如下几种:

  • 控制语句: 包括IF 语句、CASE语句
  • 循环语句: 包括LOOP语句, WHILE语句、FOR语句
  • 顺序语句: 包括GOTO语句

二、语句种类

  1、控制语句

    a、IF语句

       语法如下:

        IF 条件语句 TEHN 执行语句

        ELSIF 条件语句 TEHN 执行语句

        ELSE 执行语句

        END IF;

      示例如下:

DECLARE    i number;    str VARCHAR2(18) := b;BEGIN    --数字判断    if(i = 6) THEN                NULL; -- 如果什么都不做建议写null,保证语句的完整性    ELSIF(i is null) THEN         dbms_output.put_line(null);    ELSE        dbms_output.put_line(null);    END IF;        --    字符串判断    if(str = a) THEN        dbms_output.put_line(if);    ELSIF (str = b) THEN        dbms_output.put_line(elsif);    ELSE        dbms_output.put_line(else);    END IF;END;

    b、CASE语句

      语法如下:

      1、变量判断

        CASE 变量

        WHEN 值 THEN 执行语句

        WHEN 值 THEN 执行语句

                   END CASE;

                 2、表达式判断

       CASE

       WHEN 表达式 TEHN 执行语句

       WHEN 表达式 TEHN 执行语句

                    END CASE;

      示例代码如下:

DECLARE    str VARCHAR2(18) := B;    num NUMBER := 60;    strresult VARCHAR2(10);    numresult VARCHAR2(10);BEGIN    -- 变量判断    CASE str            WHEN A THEN strresult := 优秀;        WHEN B THEN strresult := 良好;        WHEN C THEN strresult := 合格;        WHEN D THEN strresult := 不及格;    END CASE;    --表达式判断    CASE        WHEN num < 60 THEN numresult := 不及格;        WHEN num < 70 THEN numresult := 合格;        WHEN num < 70 THEN numresult := 良好;        WHEN num < 70 THEN numresult := 优秀;    END CASE;        dbms_output.put_line(strresult);    dbms_output.put_line(numresult);END;

 

  2、循环语句

    a、LOOP语句

      语法如下:

       LOOP

       执行语句

       EXIT WHEN 条件      

       END LOOP;

      示例代码:

DECLARE    i NUMBER := 0 ;BEGIN    LOOP         i := i + 1 ;         dbms_output.put_line (i) ;         EXIT WHEN i = 5 ;    END LOOP ;END ;

    b、WHILE语句

      语法如下:

       WHILE 条件 LOOP

       执行语句

       END LOOP;

-- 打印i每次增加后的值DECLARE    i NUMBER := 0 ;BEGIN    WHILE i < 5 LOOP         i := i + 1 ;         dbms_output.put_line (i: || i) ;    END LOOP ;END ;

    c、FOR语句

              语法如下:

      FOR 变量 IN (REVERSE) 数字 .. 数字 LOOP

      执行语句

      END LOOP;

     加上REVERSE就是数字的逆序。

     示例代码如下:

-- index 是for开始就定了的BEGIN    -- 打印1到5之前的数    FOR i IN 1 .. 5 LOOP         dbms_output.put_line (i: || i) ;    END LOOP ;     -- 打印5-到20的数,逆序打印    FOR j IN REVERSE 5 .. 20 LOOP         dbms_output.put_line (j: || j) ;    END LOOP ;END ;

  3、顺序语句

    a、GOTO语句

      语法如下:

      GOTO label;

      GOTO语句一般都是由某行跳到另外一行。

       示例代码如下:

 1 DECLARE 2     i NUMBER := 1 ; 3 BEGIN 4     loop  5         dbms_output.put_line (i) ;  6         i := i + 1 ; 7     IF i = 10 THEN 8         GOTO label ; 9     END IF ;10 END loop ;11     << label >> 12     dbms_output.put_line (label) ;13 END;

       本例子就i一直循环加一,当i等于10时,跳出循环,跳到第11行并执行。 

PL/SQL之--流程控制语句