`
wsql
  • 浏览: 11782690 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

pl/sql条件和顺序控制

 
阅读更多

在前一篇blog,写了if的condition的控制,见:点击打开链接

接着这个话题,这里谈if和case。

if先。

几种常见的if组合:

1)if-then组合

语法:
if condition
then
statement;
end if;

注释:
最简单的if判断。

2)if-then-else组合

语法:
if condition_1
then
statement_1;
else
statement_2;
end if;

注释:
如果在两个互斥的行为中作出抉择,这或者不赖。因为if-then-else是一个“或者...或者”的结构,因此“两虎相斗,必有一伤”,一旦合适的被执行,控制权立即交割。

3) if-then-elsif组合

语法:
if condition_1
then
statement_1;
elsif condition_2
then
statement_2;
[else
statement_3; --else子句为可选项
]
end if;

注释:
9i之后,使用case语句会更好点。

逻辑较复杂的,或者会涉及到嵌套if。

if condition_1
then
  if condition_2
  then
    statement_2;
  else
    if condition_3
    then
      statement_3;
    elsif condition_4
    then
      statement_4;
    end if;
  end if;
end if;


如果条件逻辑所使用的嵌套已然超过3层,那么你可以考虑用函数等模块来隐藏最内层的if语句。嵌套if的一个好处就是可以延迟对于内层条件的求值,这也是我们使用它的主要理由,只有当另一个条件为true时,这个条件才会被执行。比如,劳动周令班干部去扫地:

if check_monitor(stu_id)
then
  if clean_room(stu_id)
  then
    dbms_output.put_line("劳动周全部由班干部去劳动哈");
  end if;
end if;


if 语法陷阱

一个if总要有一个匹配的end if,且在关键字end 和 if之间要有空格;
关键字elsif不要夹带“e”;
只在关键字end if后使用分号(;)

case 语句

1)类别
简单型的case语句
搜索型的case语句


2)简单型的case
定义:根据一个简单的表达式的结果来选择要执行的pl/sql语句
语法:
case expression
when result_1
then
statement_1;
when result_2
then
statement_2;
...
else
statement_n;
end case;
注释:
1)在case中,else的行为和在if中完全不一样!case中,若未定义else,而且when中没有能配得上case表达式的结果值,那么就会抛出case_not_found异常。
2)case语法,expression和result元素,既可以是标量,也可以是能够得到标量结果的表达式。
例子:
case true
when salary>=1000 and salary<=2000
then
give_bonus(employee_id,150);
when salary>2000 and salary<=4000
then
give_bonus(employee_id,100);
else
give_bonus(employee_id,0);
end case;

搜索型的case
定义:对一系列布尔表达式求值,一旦某个表达式求值结果为true,则执行和该表达式关联的pl/sql语句
语法:
case
when expression_1
statement_1;
when expression_2
statement_2;
...
else
statement_n;
end case;
注释:
1)when表达式,至上而下顺序求值。将最可能的when语句置顶,或者会额外地收获性能上的好处。
2)注意when表达式的边界重叠问题
例子:
case
when salary>4000
then
give_bonus(employee_id,150);
when salary>2000
then
give_bonus(employee_id,100);
else
give_bonus(employee_id,0);
end case;

case表达式。在前边blog已写。见:点击打开链接

分享到:
评论

相关推荐

    Oracle PL/SQL程序设计(第5版)(下册)第二部分

    探讨了数据类型、条件控制语句和顺序控制语句、循环、异常处理、安全特性、全球化和本地化问题, 以及PL/SQL架构。 ? 通过使用过程、函数、触发器和包,建立模块化的PL/SQL应用。 内容推荐 《Oracle PL/SQL程序...

    Oracle PL SQL程序设计 上 第五版(代码示例)

    第4章 条件和顺序控制 77 第5章 用循环进行迭代处理 96 第6章 异常处理 118 第3部分 pl/sql数据 第7章 使用数据 159 第8章 字符串 182 第9章 数字 221 第10章 日期和时间戳 255 第11...

    Oracle PL/SQL程序设计(第5版)(下册) 第一部分

    探讨了数据类型、条件控制语句和顺序控制语句、循环、异常处理、安全特性、全球化和本地化问题, 以及PL/SQL架构。 ? 通过使用过程、函数、触发器和包,建立模块化的PL/SQL应用。 内容推荐 《Oracle PL/SQL程序...

    PL/SQL Developer8.04官网程序_keygen_汉化

    控制结构 PL/SQL程序段中有三种程序结构:条件结构、循环结构和顺序结构。  1) 条件结构 与其它语言完全类似,语法结构如下: if condition thenstatement1elsestatement2end if ;  2) 循环结构 这一结构与其他...

    Oracle PL SQL程序设计 上 第五版part1

    第4章 条件和顺序控制 77 第5章 用循环进行迭代处理 96 第6章 异常处理 118 第3部分 pl/sql数据 第7章 使用数据 159 第8章 字符串 182 第9章 数字 221 第10章 日期和时间戳 255 第11...

    Oracle PL SQL程序设计 上 第五版part2

    第4章 条件和顺序控制 77 第5章 用循环进行迭代处理 96 第6章 异常处理 118 第3部分 pl/sql数据 第7章 使用数据 159 第8章 字符串 182 第9章 数字 221 第10章 日期和时间戳 255 第11...

    PL/SQL 基础.doc

    ---- 第四章 PL/SQL控制语句 ---- 1. 条件语句 IF boolean_expression1(条件1) THEN ... ELSIF boolean_expression2(条件2) THEN /*注意是ELSIF,而不是ELSEIF*/ ... /*ELSE语句(ELSIF)不是必须的,但END IF...

    精通Oracle.10g.PLSQL编程

    编写控制结构 7.1 条件分支语句 7.2 CASE语句 7.3 循环语句 7.4 顺序控制语句 7.5 习题 第8章 使用复合数据类型 8.1 PL/SQL记录 8.1.1 定义PL/SQL记录 8.1.2 使用PL/SQL...

    PLSQLDeveloper下载

     PL/SQL程序段中有三种程序结构:条件结构、循环结构和顺序结构。 1) 条件结构 与其它语言完全类似,语法结构如下: if condition then statement1 else statement2 end if ; 2) 循环结构 这一结构与其他语言不太...

    PLSQL Developer 10.0.5.1710 中文注册版

    如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要...

    Oracle课件.pdf

    第1章 概述 1. BI介绍 2. Oracle介绍与安装 2.1 Oracle安装 ...2.2条件控制 2.3循环控制 2.4游标 2.5动态SQL 3.创建存储过程 4.创建自定义函数 5.异常处理 6.同步数据 7.创建包 8.创建日志 第6章

    Oracle数据库SQL基本应用与介绍

    Oracle数据库内部的数据操作可以通过sql语句执行处理,sql与C、Basic等语言不通,数据的访问方法和操作顺序不用正确指定,是要告诉数据库引擎要做什么就可以了。Oracle不仅可以通过基本的sql进行简单的数据操作,还...

    收获不止SQL优化

    13.1.5 使用10046 trace跟踪PL/SQL 368 13.2 PL/SQL优化其他相关扩展 369 13.2.1 编译无法成功 369 13.2.2 通用脚本分享 370 13.3 本章习题、总结与延伸 380 第14章 动手,高级写法应用让SQL飞 381 14.1 具体...

    SQL普查优化信息汇总

    SQL性能优化技术总结: ...WHERE子句中的连接条件书写顺序 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾 减少对表的访问次数 (减少逻辑读) 避免索引列的类型 隐式转换造成的索引无效

    PLSQL Developer 10.0.5 最新版

    安装顺序: 1、先安装 plsqldev1005.exe,并启动程序,第一次启动直接按取消进入程序界面 2、打开 keygen.exe 将生成的注册信息填入即可注册成功 3、退出plsql developer,然后运行 chinese.exe ,选择plsqldev1005...

    Oracle修改字段顺序

    Oracle Pl/SQL 修改各字段显示的顺序

    收获,不止SQL优化--抓住SQL的本质

    13.1.5 使用10046trace 跟踪PL/SQL 368 13.2 PL/SQL优化其他相关扩展 369 13.2.1 编译无法成功 369 13.2.2 通用脚本分享 370 13.3 本章习题、总结与延伸 380 第14章 动手,高级写法应用让SQL飞 381 14.1 具体...

    H155-合集-大型数据库系统概论-实验.pptx

    掌握PL/SQL控制结构,包括顺序、选择、NULL和循环四种结构及GOTO语句。 3. 掌握PL/SQL中游标的使用方法。 4. 掌握SQL *Plus和Worksheet开发环境的使用方法。 H155-合集-大型数据库系统概论-实验全文共24页,当前为...

Global site tag (gtag.js) - Google Analytics