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

简介: 一、简介   像编程语言一样,oracle PL/SQL也有自己的流程控制语句。通过流程控制语句,我们可以在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行并执行。 

目录
相关文章
|
1月前
|
SQL 数据采集 监控
局域网监控电脑屏幕软件:PL/SQL 实现的数据库关联监控
在当今网络环境中,基于PL/SQL的局域网监控系统对于企业和机构的信息安全至关重要。该系统包括屏幕数据采集、数据处理与分析、数据库关联与存储三个核心模块,能够提供全面而准确的监控信息,帮助管理者有效监督局域网内的电脑使用情况。
25 2
|
4月前
|
SQL Oracle 关系型数据库
SQL与PL/SQL:数据库编程语言的比较
【8月更文挑战第31天】
85 0
|
6月前
|
SQL 数据库 Perl
PL/SQL中执行按钮变为灰色后如何恢复【已解决】
PL/SQL中执行按钮变为灰色后如何恢复【已解决】
536 0
|
7月前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL游标自定义异常:数据探险家的“专属警示灯”
【4月更文挑战第19天】Oracle PL/SQL中的游标自定义异常是处理数据异常的有效工具,犹如数据探险家的警示灯。通过声明异常名(如`LOW_SALARY_EXCEPTION`)并在满足特定条件(如薪资低于阈值)时使用`RAISE`抛出异常,能灵活应对复杂业务规则。示例代码展示了如何在游标操作中定义和捕获自定义异常,提升代码可读性和维护性,确保在面对数据挑战时能及时响应。掌握自定义异常,让数据管理更从容。
|
7月前
|
SQL Oracle 安全
Oracle的PL/SQL游标异常处理:从“惊涛骇浪”到“风平浪静”
【4月更文挑战第19天】Oracle PL/SQL游标异常处理确保了在数据操作中遇到的问题得以优雅解决,如`NO_DATA_FOUND`或`TOO_MANY_ROWS`等异常。通过使用`EXCEPTION`块捕获并处理这些异常,开发者可以防止程序因游标问题而崩溃。例如,当查询无结果时,可以显示定制的错误信息而不是让程序终止。掌握游标异常处理是成为娴熟的Oracle数据管理员的关键,能保证在复杂的数据环境中稳健运行。
|
7月前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL中FOR语句循环游标的奇幻之旅
【4月更文挑战第19天】在Oracle PL/SQL中,FOR语句与游标结合,提供了一种简化数据遍历的高效方法。传统游标处理涉及多个步骤,而FOR循环游标自动处理细节,使代码更简洁、易读。通过示例展示了如何使用FOR循环游标遍历员工表并打印姓名和薪资,对比传统方式,FOR语句不仅简化代码,还因内部优化提升了执行效率。推荐开发者利用这一功能提高工作效率。
|
7月前
|
SQL Oracle 安全
Oracle的PL/SQL异常处理方法:守护数据之旅的“魔法盾”
【4月更文挑战第19天】Oracle PL/SQL的异常处理机制是保障数据安全的关键。通过预定义异常(如`NO_DATA_FOUND`)和自定义异常,开发者能优雅地管理错误。异常在子程序中抛出后会向上传播,直到被捕获,提供了一种集中处理错误的方式。理解和善用异常处理,如同手持“魔法盾”,确保程序在面对如除数为零、违反约束等挑战时,能有效保护数据的完整性和程序的稳定性。
|
SQL 存储 Oracle
|
3月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
5月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
134 13
下一篇
DataWorks