pl/sql 实例精解 05
本章主要讨论 case 语句
1: case [SELECTOR]
2: when expression 1 then statement 1;
3: when expression 2 then statement 2;
4: ...
5: when expression N then statement N;
6: else statement N+1;
7: end case;
注意: pl/sql 中的 case 没有 break;
1: declare
2: v_num number := &sv_user_num;
3: v_num_flag number;
4: begin
5: v_num_flage := mod(v_num, 2);
6: case v_num_flag
7: when 0 then
8: dbms_output.put_line(v_num || 'is even number');
9: else
10: dbms_output.put_line(v_num || 'is odd number');
11: end case;
12: dbms_output.put_line('Done');
13: end;
14: /
15: show errors;
注意: case 语句有两种形式,
1. 普通形式的 case 语句, 如上例 (有选择器, SELECTOR)
2. 搜索形式的 case 语句, 即 case 关键词后边没有跟表达式, 而是直接逻辑判断 when 后边的 expression , 如果为真就执行, 如下例子: (没有选择器, SELECTOR)
1: -- 不带选择器的(SELECTOR)CASE语句
2: declare
3: v_num number := &sv_user_num;
4: v_num_flag number;
5: begin
6: case
7: when MOD(v_num, 2) = 0 then
8: dbms_output.put_line(v_num || 'is even number');
9: else
10: dbms_output.put_line(v_num || 'is odd number');
11: end case;
12: dbms_output.put_line('Done');
13: end;
14: /
15: show errors;
使用 case 表达式 (表达式一定要与变量对应)
1: -- case 表达式
2: declare
3: v_num number := &sv_user_num;
4: v_num_flag number;
5: v_result varchar2(30);
6: begin
7: v_num_flag := mod(v_num, 2);
8:
9: v_result :=
10: case v_num_flag
11: when 0 then v_num || 'is even number'
12: else v_num || ' is odd number'
13: end; -- 注意: 这只是 end, 而不是 end case
14:
15: end;
16: /
17: show errors;
BULLIF, COALESCE 函数
NULLIF(expression1, expression2), 如果 expression1 = expression2, 返回 null, 否则 返回 expression1. 这个函数与 NVL 函数相反
例如:
1: declare
2: v_num number := &sv_user_num;
3: v_remainder number;
4: begin
5: v_remainder := NULLIF(MOD(v_num, 2), 0); -- 函数会返回值
6: end;
7: /
8: show errors;
COALESCE(expression1, expression2, …, expressionN), 若果expression1 是null, 就确认expression2, 如果expression2 也是null, 就确认expression3 以此类推, 直到一个不为null 的值. 如果所有的expression都是null, 那么这个函数就返回 null.
pl/sql 实例精解 05的更多相关文章
- pl/sql 实例精解 03
1. 在Pl/sql 中使用 sql 1: /* 2: * 一个 pl/sql 语句块, 只是一个容器, 是表明一个整体的容器, 容器里可以放置多个sql语句 3: */ 4: 5: declar ...
- pl/sql 实例精解 04
本章主要讨论, IF 语句的应用. 1: if condition1 then 2: statement1 3: elsif condition2 then 4: statement2 5: else ...
- ORACLE PL/SQL 实例精解之第六章 迭代控制之一
6.1 简单循环 简单循环,就想其名称一张,是一种最基本循环.简单循环具有如下结构 LOOP STATEMENT 1; STATEMENT 2; ... STATEMENT N; END LOOP; ...
- ORACLE PL/SQL 实例精解之第三章 PL/SQL中的SQL
3.1 在PL/SQL中使用DML 在PL/SQL语块中,两种变量赋值a. := 初始化.b. select into语法,PL/SQL语块的声明部分被声明的变量,后期可以使用选择语句进行赋值. 3. ...
- ORACLE PL/SQL 实例精解之第二章 通用编程语言基础
通用编程语言基础 2.1PL/SQL编程基础 1. 字符类型:支持四中类型字符:字母,数字,符号和空格,组合一个或多个字符就会创建一个词汇单元 2. 词汇单元 a.标识符必须以字符开头 b.保留字是p ...
- ORACLE PL/SQL 实例精解之第一章 PL/SQL概念
1.传统一层一层传数据,而PLSQL作为独立的单元返回客户端,减少查询,减少网路传输的往返,高效 2.PL/SQL语句块 分为两种:命名(子程序,函数,包保存在数据库中,后期可以根据名称进行引用),匿 ...
- pl/sql 实例精解 06
1. 简单循环 1: LOOP 2: statement1; 3: statement2; 4: EXIT WHEN condition; 5: END LOOP; 6: statement3; 也可 ...
- pl/sql 实例精解 08
1: EXCEPTION 2: WHEN EXCEPTION_NAME THEN 3: ERROR-PROCESSING STATEMENTS; 写在 begin 与 end 的之间的处理异常块. 常 ...
- pl/sql 实例精解 07
这章主要讨论 oracle11g 新特性, continue, continue when 语句 continue 的作用同其他编程语言一样. continue when condition 只是当条 ...
随机推荐
- MVC工作原理
MVC(Model-View-Controller,模型—视图—控制器模式)用于表示一种软件架构模式.它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Controller) ...
- 提取nds游戏的音乐
nds游戏绝对是游戏界的瑰宝,尤其是有些游戏的音乐还很好听,所以想把它们提取出来.网上搜了下教程,这里整理一下,全程在archlinux下操作. 首先用到的工具是(vgmtrans)[https:// ...
- 将思维转向rss
本屌丝因为穷住在了离市区比较远的农民房,平时上下班单程地铁时间接近一小时.在这漫长的一小时里,总得干点什么来蹉跎这段时光,看手机是最容易实现的事情.最地铁信号不好,手机也没什么好看的. 经过高人指点说 ...
- mac 下安装 plink
1. 直接 brew install putty. 其自带 plink工具.
- jsp el 自定义方法 tld 说明
使用 el 的过程中,需要使用到后端代码处理逻辑,这个时候我们就需要自定义 方法. 如我们后端代码定义如下: package com.rhythmk.common; public class FncH ...
- VB 在Visio 2010 以编程方式创建子进程图
在2010年Visio以编程方式创建子进程图 Office 2010 https://msdn.microsoft.com/en-us/library/gg650651.aspx 简介: 学习如 ...
- C#注释——爱你不是两三天
说到注释这个东东,我不得不说:爱你不是两三天,每天却想你很多遍...原来梁静茹同学这首歌不全然是情歌啊~ 一句注释也没有的一大片的代码有木有 看着那些无名者写的神秘代码,有没有骂一句,你妹的... ...
- C++ 代码风格准则:POD
作者:一根筋的傻瓜链接:https://www.zhihu.com/question/36379130/answer/69853366来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...
- openSession() 与 getCurrentSession() 有何不同和关联呢?
在 SessionFactory 启动的时候, Hibernate 会根据配置创建相应的 CurrentSessionContext ,在getCurrentSession() 被调用的时候,实际被执 ...
- 一个可变布局列表,有9种布局item大小,每个item可拖拽切换位置
代码地址如下:http://www.demodashi.com/demo/11271.html 一.准备工作 准备一台安卓设备手机,4.4以上版本 本例子实现,一个可变布局列表,有9种布局item大小 ...