`

PL/SQL Flow Control Example

 
阅读更多

PL/SQL流程控制结构包括:条件控制、循环控制、顺序控制。

 

条件控制

 

  • IF...THEN...ENDIF结构
  • IF...THEN...ELSE...ENDIF结构
DECLARE
   v_ename   VARCHAR2 (20);
   v_sal     NUMBER (7, 2);
BEGIN
   SELECT ename, sal
     INTO v_ename, v_sal
     FROM emp
    WHERE empno = &eno;

   DBMS_OUTPUT.put_line (v_ename || '雇员的工资' || v_sal);

   IF v_sal < 1000
   THEN
      DBMS_OUTPUT.put_line ('工资低于1000');
   ELSE
      IF 1000 <= v_sal AND v_sal < 5000
      THEN
         DBMS_OUTPUT.put_line ('工资在1000到5000之间');
      ELSE
         DBMS_OUTPUT.put_line ('工资高于5000');
      END IF;
   END IF;
END;
/

 

 

  •  IF...THEN...ELSEIF...ENDIF结构
DECLARE
   v_ename      VARCHAR2 (20);
   v_hiredate   DATE;
   v_bonus      NUMBER (6, 2);
BEGIN
   SELECT ename, hiredate
     INTO v_ename, v_hiredate
     FROM emp
    WHERE empno = &eno;

   IF v_hiredate > TO_DATE ('01-JAN-95')
   THEN
      v_bonus := 800;
   ELSIF v_hiredate > TO_DATE ('01-JAN-90')
   THEN
      v_bonus := 1600;
   ELSE
      v_bonus := 2400;
   END IF;

   DBMS_OUTPUT.put_line (
         v_ename
      || '雇员的雇佣日期是'
      || v_hiredate
      || '、奖金是'
      || v_bonus);
END;
/

 

 

  •  case结构

    example1

DECLARE
   v_ename   VARCHAR2 (20);
   v_sal     NUMBER (7, 2);
BEGIN
   SELECT ename, sal
     INTO v_ename, v_sal
     FROM emp
    WHERE empno = 7788;

   DBMS_OUTPUT.put_line (
      '雇员名称:' || v_ename || ' 工资:' || v_sal);

   CASE
      WHEN v_sal < 1000
      THEN
         DBMS_OUTPUT.put_line ('工资低于1000');
      WHEN 1000 <= v_sal AND v_sal < 5000
      THEN
         DBMS_OUTPUT.put_line ('工资在1000到5000之间');
      ELSE
         DBMS_OUTPUT.put_line ('工资高于5000');
   END CASE;
END;
/

    example2

DECLARE
   v_grade   CHAR := 'B';
BEGIN
   CASE v_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');
      ELSE
         DBMS_OUTPUT.put_line ('NO such grade');
   END CASE;
END;
/

 

 

循环控制

 

  • LOOP...ENDLOOP结构
DECLARE
   v_i   NUMBER := 1;
   v_s   NUMBER := 0;
BEGIN
   LOOP
      EXIT WHEN v_i > 100;
      v_s := v_s + v_i;
      v_i := v_i + 1;
   END LOOP;

   DBMS_OUTPUT.put_line (v_s);
END;
/

 

  •  WHILE...LOOP...ENDLOOP结构
DECLARE
   v_i   NUMBER := 1;
   v_s   NUMBER := 0;
BEGIN
   WHILE v_i <= 100
   LOOP
      v_s := v_s + v_i;
      v_i := v_i + 1;
   END LOOP;

   DBMS_OUTPUT.put_line (v_s);
END;
/

 

  •  FOR...LOOP...ENDLOOP结构
DECLARE
   v_s   NUMBER := 0;
BEGIN
   FOR v_i IN 1 .. 100
   LOOP
      v_s := v_s + v_i;
   END LOOP;

   DBMS_OUTPUT.put_line (v_s);
END;
/

 

顺序控制

顺序控制中用到的语句有:GOTO语句、NULL语句。

 

  • GOTO语句

    GOTO语句是一条无条件跳转语句,它能实现语句从一处无条件地跳转到一个用标签指定的另一条可执行语句处或一个       PL/SQL块。但过多地使用GOTO语句将导致复杂的结果,破坏程序的结构,使程序难以理解和维护。所以,一般只用在     从一个PL/SQL块中跳转到异常处理的语句前面。

DECLARE
   v_i   NUMBER := 0;
   v_s   NUMBER := 0;
BEGIN
  <<label_1>>
   v_i := v_i + 1;

   IF v_i <= 100
   
   THEN
      v_s := v_s + v_i;
      GOTO label_1;
   END IF;

   DBMS_OUTPUT.put_line (v_s);
END;
/
 

 

  • NULL语句

    NULL语句是一个可执行语句,但它是不执行任何操作的空语句或占位语句,即它什么操作也不做就将控制交给下一个语     句。NULL语句的作用是提高程序的可读性,保证其他语句结构的完整性、正确性。如,IF语句中的每个子句都必须包括     一个可执行语句,否则就会出现错误提示。

DECLARE
   v_empno   emp.empno%TYPE;
   v_ename   emp.ename%TYPE;
   v_sal     emp.sal%TYPE;
   v_comm    emp.comm%TYPE;
BEGIN
   v_empno := &eno;

   SELECT ename, sal
     INTO v_ename, v_sal
     FROM emp
    WHERE empno = v_empno;

   IF v_sal <= 3000
   THEN
      v_comm := v_sal * 0.15;

      UPDATE emp
         SET comm = v_comm
       WHERE empno = v_empno;

      DBMS_OUTPUT.put_line (v_ename || ' 的补助是 ' || v_comm);
   ELSE
      NULL;
   END IF;
END;
/

    当采用从上到下的设计思想来设计PL/SQL程序时,NULL语句是创造占位程序的一个方法。占位程序是一个假的子程序    (过程、函数),它可以帮助你推迟对子程序的定义或编写,直到调试完主程序为止。这样就不会因为编写细节二耽误其     他程序或主程序的开发。

 

分享到:
评论

相关推荐

    pl/sql最新中文手册

    PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种过程化语言,专为数据库操作设计。这个"PL/SQL最新中文手册"显然是一份详细解释PL/SQL 7.0版本的指南,对于学习和精通Oracle数据库编程至关重要。以下是手册...

    oracle10g_pl/sql

    Oracle 10g PL/SQL 是Oracle数据库系统中用于创建和管理存储过程、函数、触发器等数据库对象的编程语言。本教程旨在为初学者提供一个全面的学习平台,同时也为经验丰富的开发者提供参考资料。PL/SQL是Oracle特有的...

    一个对数据库的操作工具PL/SQLpl/sqL工具

    PL/SQL是Oracle公司开发的一种过程化语言,全称为Procedural Language/Structured Query Language,它是SQL的一个扩展,专门用于处理Oracle数据库系统。这个“PL/SQL工具”显然是一个用于辅助管理和操作Oracle数据库...

    Oracle PL/SQL实战(待续)

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与PL的程序设计特性,是Oracle数据库系统中用于创建存储过程、函数、触发器和包的主要工具。在这个"Oracle PL/SQL实战(待续)"的主题中,我们将深入...

    Oracle资料学习PL/SQL必备

    "Oracle资料学习PL/SQL必备"这个主题涵盖了对Oracle数据库系统以及PL/SQL编程语言的学习资源,特别是针对那些希望深入理解并掌握PL/SQL的初学者或专业人士。PL/SQL的基础部分是了解和使用Oracle数据库的关键,它包括...

    pl/sql developer11.0

    PL/SQL Developer是一款由Allround Automations公司开发的专业Oracle数据库开发工具,专为编写、调试、测试和管理PL/SQL代码而设计。标题中的“pl/sql developer11.0”指的是该软件的第11个主要版本。在本文中,我们...

    Oracle PL/SQL by Example(4th Edition)

    《Oracle PL/SQL by Example(4th Edition)》是一本专为Oracle数据库用户设计的PL/SQL编程指南,尤其适合那些希望通过实践学习这一强大的过程式语言的开发者。本书的第四版详细介绍了Oracle PL/SQL的各种核心概念和...

    oracle 9i pl/sql程序设计笔记

    ### Oracle 9i PL/SQL程序设计笔记精要 #### PL/SQL基础知识概览 **标题与描述**:本文档围绕“Oracle 9i PL/SQL程序设计笔记”这一核心主题,深入探讨了PL/SQL语言的基础知识及其在Oracle 9i数据库环境中的应用。...

    pl/sql64位

    PL/SQL是Oracle数据库系统中的一个关键组件,全称为Procedural Language/Structured Query Language,是一种结合了SQL和过程编程语言的工具,主要用于编写数据库应用程序。64位的PL/SQL开发者工具对于那些处理大数据...

    ORACLE PL/SQL从入门到精通

    ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...

    PL/SQL VCS插件安装包+PL/SQL

    这个安装包结合了Version Control System (VCS)的功能,如Visual SourceSafe (VSS),使用户能够在PL/SQL Developer环境中直接进行版本控制操作。 PL/SQL Developer是一款流行的Oracle数据库开发工具,它提供了编写...

    oracle pl/sql从入门到精通 配套源代码

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作功能与PL/SQL的程序设计特性,广泛应用于Oracle数据库的开发和管理。这本书"Oracle PL/SQL从入门到精通"的配套源代码,显然是为了...

    Oracle PL/SQL程序设计(第5版)(上下册)

    ### Oracle PL/SQL程序设计(第5版)(上下册)知识点概述 #### 一、PL/SQL编程基础 - **PL/SQL简介**:PL/SQL(Procedural Language for SQL)是Oracle数据库的一种内嵌式过程化语言,用于增强SQL的功能。它允许在SQL...

    PL/SQL Developer 远程连接Oracle数据库

    PL/SQL Developer是一款专为Oracle数据库设计的集成开发环境,它极大地简化了PL/SQL语言的编写、调试和管理任务。远程连接Oracle数据库是PL/SQL Developer的一项关键功能,允许用户在本地计算机上操作和管理远程...

    pl/sql 免安装,绿色版pl/sql

    1. **PL/SQL编程支持**:PL/SQL Developer内置了强大的PL/SQL编辑器,支持语法高亮、自动完成、错误检查等功能,使开发人员能够高效编写PL/SQL代码。此外,还具备代码折叠、查找替换、书签设置等实用功能,提高了...

    Oracle PL/SQL程序设计(第5版)(套装上下册)

    《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...

    PL/SQL 基本知识

    PL/SQL是Oracle数据库系统中的一个核心组件,全称为“Procedural Language/Structured Query Language”,它是SQL的扩展,增加了编程元素,使得开发者能够编写存储过程、函数、触发器等数据库应用程序。这篇博客主要...

    pl/sql快捷插件

    PL/SQL Developer是一款由Allround Automations公司开发的专门用于Oracle数据库管理的集成开发环境(IDE)。这款软件为Oracle数据库管理员、开发人员和测试人员提供了便捷的SQL和PL/SQL编写、调试和执行功能。而“pl...

    Oracle PL/SQL实例编程(PL/SQL经典书籍)

    Oracle PL/SQL是一种强大的编程语言,它将数据库管理和应用程序逻辑紧密结合起来,是Oracle数据库系统中的核心组件之一。这本书“Oracle PL/SQL实例编程”显然旨在深入讲解如何利用PL/SQL进行实际开发工作,通过实例...

    PL/SQL User's Guide and Reference (官方CHM)

    PL/SQL, Oracle's procedural extension of SQL, is an advanced fourth-generation programming language (4GL). It offers modern features such as data encapsulation, overloading, collection types, ...

Global site tag (gtag.js) - Google Analytics