zoukankan      html  css  js  c++  java
  • 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行并执行。 

  • 相关阅读:
    [翻译].NET Shell Extensions
    设计模式复习小结一(Strategy Pattern/Observer Pattern/Decorator Patter/Factory Pattern)
    学习定制自己的博文1
    SQLServer复习文档1(with C#)
    C#学习笔记-基础知识篇(不定期更新)
    C#学习笔记-迭代器模式
    C#学习笔记-组合模式
    C#学习笔记-备忘录模式
    C#学习笔记-适配器模式
    C#学习笔记-状态模式
  • 原文地址:https://www.cnblogs.com/always-online/p/3974946.html
Copyright © 2011-2022 走看看