一、简介

  像编程语言一样,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语句一般都是由某行跳到另外一行。

       示例代码如下:

 DECLARE
i NUMBER := 1 ;
BEGIN
loop
dbms_output.put_line (i) ;
i := i + 1 ;
IF i = 10 THEN
GOTO label ;
END IF ;
END loop ;
<< label >>
dbms_output.put_line ('label') ;
END;

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

PL/SQL之--流程控制语句的更多相关文章

  1. Sql Server 流程控制语句

    T-SQL中用来编写流程控制模块的语句有:BEGIN...AND语句.IF...ELSE语句.CASE语句.WHILE语句.GOTO语句.BREAK语句.WAITFOR语句和RETURN语句. 批处理 ...

  2. PL/SQL 03 流程控制

    --IF语法IF condition THEN  statements;[ELSIF condition THEN  statements;][ELSE  statements;]END IF; -- ...

  3. PL/SQL流程控制语句

    PL/SQL流程控制语句介绍PL/SQL的流程控制语句, 包括如下三类:控制语句: IF 语句循环语句: LOOP语句, EXIT语句顺序语句: GOTO语句, NULL语句①if语句 IF < ...

  4. [推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆)

    原文:[推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆) [推荐]ORACLE PL/SQL编程详解之三: PL/SQL流程控制语句(不给规则,不成方圆) ...

  5. oracle数据库之PL/SQL 流程控制语句

    介绍 PL/SQL 的流程控制语句, 包括如下三类: 1.控制语句: IF 语句 2.循环语句: LOOP 语句, EXIT 语句 3.顺序语句: GOTO 语句, NULL 语句 一 条件语句 IF ...

  6. PL/SQL程序设计、流程控制

    PL/SQL是 Procedure Language & Structured Query Language 的缩写 PL/SQL是对SQL语言存储过程语言的扩展 PL/SQL程序由三个块组成 ...

  7. 【强烈强烈推荐】《ORACLE PL/SQL编程详解》全原创(共八篇)--系列文章导航

    原文:[强烈强烈推荐]<ORACLE PL/SQL编程详解>全原创(共八篇)--系列文章导航 <ORACLE PL/SQL编程详解> 系列文章目录导航 ——通过知识共享树立个人 ...

  8. 浅谈PL/SQL语言基础

    在前面的学习中,我们大部分接触的都是SQL语言,但是,在实现复杂操作的时候,SQL语言就无能为力了,这时候就需要引入新的语言,PL/SQL语言就是对SQL语言的扩展,可以实现存储过程,函数等的创建.下 ...

  9. Oracle中PL/SQL的执行部分和各种流程控制

    Oracle中PL/SQL的执行部分和异常部分 一.PL/SQL的执行部分. 赋值语句. 赋值语句分两种,一种是定义一个变量,然后接收用户的IO赋值:另一种是通过SQL查询结果赋值. 用户赋值举例: ...

随机推荐

  1. EntityFramework 6.1.2-beta2

    EntityFramework 6.1.2-beta2 Entity Framework is Microsoft's recommended data access technology for n ...

  2. 【iOS】编译静态库

    与java和.net一样,objc也由类库的概念,不过在在objc上一般叫库,库表示程序代码集合,可以共享给其他程序使用,库是编译后的二进制文件,因此不能看到源代码,多用于一些开放sdk(如百度地图s ...

  3. iOS开发系列通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开

    --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...

  4. ActiveReports 报表控件官方中文入门教程 (3)-如何选择页面报表和区域报表

    本篇文章将介绍区域报表和页面报表的常见使用场景.区别和选择报表类型的一些建议,两种报表的模板设计.数据源(设计时和运行时)设置.和浏览报表的区别. ActiveReports 报表控件官方中文入门教程 ...

  5. MyBatis中的特殊符号[20160713]

    今天中午回到工位已经是12:20多了,没有时间睡觉了,本想着还能提前开始,结果看了点新闻之后,又是12:40了,所以新闻坚决不能看,执行力. 今天主要记录一下MyBatis中的特殊符号的问题,这个问题 ...

  6. PHP生成图片验证码demo【OOP面向对象版本】

    下面是我今天下午用PHP写的一个生成图片验证码demo,仅供参考. 这个demo总共分为4个文件,具体代码如下: 1.code.html中的代码: <!doctype html> < ...

  7. Struts2中 Result类型配置详解

    一个result代表了一个可能的输出.当Action类的方法执行完成时,它返回一个字符串类型的结果码,框架根据这个结果码选择对应的result,向用户输出.在com.opensymphony.xwor ...

  8. SharpGL学习笔记(十七) 立体文字和平面文字

    在写有关文字的主题前,笔者翻阅了几本书上的相关章节,研究了几天无果. 徐明亮<OpenGL游戏编程>书中介绍的是“位图字体”,也就是把字体栅格化,然后画出来.照着书上的VC代码翻译为C#的 ...

  9. request.getRequestDispatcher()的两个方法forward()/include()!!!

    RequestDispatcher rd = request.getRequestDispatcher("/MyServlet");请求转发: rd.forward( reques ...

  10. swift学习笔记之-错误处理

    //错误处理 import UIKit /*错误处理(Error Handling):响应错误以及从错误中恢复的过程 在 Swift 中,错误用符合ErrorType协议的类型的值来表示.这个空协议表 ...