【PL/SQL】 控制结构
一、控制结构的作用和类型
1.作用:在PL/SQL块内部使用控制结构来更改程序的逻辑
2.类型:条件IF语句、CASE语句、循环语句
①条件控制语句
类型:
·简单条件判断(IF-THEN)
语句:
IF condition THEN
Statements
END IF;
实例:
SQL> DECLARE
2 myage NUMBER :=10;
3 BEGIN
4 IF myage<11 THEN
5 dbms_output.put_line('I am a child');
6 END IF;
7 END;
8 /
I am a child
PL/SQL procedure successfully completed
·二重条件判断(IF-THEN-ELSE)
语法:
IF condition THEN
Statements;
ELSE
Statements;
END IF;
实例:
SQL> DECLARE
2 myage NUMBER :=18;
3 BEGIN
4 IF myage<11 THEN
5 dbms_output.put_line('I am a child');
6 ELSE
7 dbms_output.put_line('I am not a child');
8 END IF;
9 END;
10 /
I am not a child
PL/SQL procedure successfully completed
·多重条件判断(IF-THEN-ELSIF)
语法:
IF condition THEN
Statements;
ELSIF condition THEN
Statements;
ELSE
Statements;
END IF;
实例:
SQL> DECLARE
2 myage NUMBER :=18;
3 BEGIN
4 IF myage<11 THEN
5 dbms_output.put_line('I am a child');
6 ELSIF myage<20 THEN
7 dbms_output.put_line('I am not a child');
8 ELSE
9 dbms_output.put_line('I am always young');
10 END IF;
11 END;
12 /
I am not a child
PL/SQL procedure successfully completed
二、CASE 语句
①作用: CASE表达式返回基于一个或多个备选项的结果
②语法:
CASE selector
WHEN exp1 THEN res1
WHEN exp2 THEN res2
WHEN exp3 THEN res3
……
[ELSE resN]
END;
实例:
SQL> DECLARE
2 v_mygrade CHAR(1) :='A';
3 v_res VARCHAR2(20);
4 BEGIN
5 v_res :=CASE v_mygrade
6 WHEN 'A' THEN
7 'The mark is 90-100'
8 WHEN 'B' THEN
9 'The mark is 80-90'
10 WHEN 'C' THEN
11 'The mark is 70-80'
12 WHEN'D' THEN
13 'The mark is 60-70'
14 WHEN 'E' THEN
15 'The mark is 0-60'
16 END;
17 dbms_output.put_line(v_res);
18 END;
19 /
The mark is 90-100
PL/SQL procedure successfully completed
三、NULL值处理
AND |
TRUE |
FALSE |
NULL |
TRUE |
TRUE |
FALSE |
NULL |
FALSE |
FALSE |
FALSE |
FALSE |
NULL |
NULL |
FALSE |
NULL |
OR |
TRUE |
FALSE |
NULL |
TRUE |
TRUE |
TRUE |
TRUE |
FALSE |
TRUE |
FALSE |
NULL |
NULL |
TRUE |
NULL |
NULL |
NOT |
|
TRUE |
FALSE |
FALSE |
TRUE |
NULL |
NULL |
四、循环语句
·循环是指多次循环处理一条语句或一段逻辑
·循环原则:
①如果循环内部必须执行一次,则使用基本循环
②如果必须在每次循环开始时判断条件,则使用WHILE循环
③如果知道循环次数,则使用FOR循环
·循环类型:
—基本循环
语法:
LOOP
Statement;
……
EXIT [WHEN condition];
END LOOP
实例:
SQL> DECLARE
2 i NUMBER :=0;
3 BEGIN
4 LOOP
5 dbms_output.put_line(i);
6 i :=i+1;
7 EXIT WHEN i=10;
8 END LOOP;
9 END;
10 /
0
1
2
3
4
5
6
7
8
9
PL/SQL procedure successfully completed
—FOR循环
语法:
FOR counter IN [REVERSE] lower_bound..upper_bound
LOOP
Statement1;
Statement2;
…
END LOOP;
实例:
SQL> DECLARE
2 v_count NUMBER;
3 BEGIN
4 FOR i IN 1..10
5 LOOP
6 INSERT INTO t1 VALUES(i,'tom'||i,'ok');
7 END LOOP;
8 COMMIT;
9 SELECT COUNT(*) INTO v_count FROM t1;
10 dbms_output.put_line('T1 rows is:' ||v_count);
11 END;
12 /
T1 rows is:10
PL/SQL procedure successfully completed
SQL> select * from t1;
ID NAME DSC
--------------------------------------- ---------- --------------------
2 tom2 ok
1 tom1 ok
3 tom3 ok
4 tom4 ok
5 tom5 ok
6 tom6 ok
7 tom7 ok
8 tom8 ok
9 tom9 ok
10 tom10 ok
10 rows selected
—WHILE循环
语法:
WHILE condition LOOP
Statement1;
Statement2;
……
END LOOP;
实例:
SQL> DECLARE
2 v_num NUMBER :=1;
3 v_count NUMBER;
4 BEGIN
5 WHILE v_num <=10 LOOP
6 INSERT INTO t1 VALUES(v_num,'tom'||v_num,'ok');
7 v_num :=v_num+1;
8 END LOOP;
9 COMMIT;
10 SELECT COUNT(*) INTO v_count FROM t1;
11 dbms_output.put_line('T1 rows is :'||v_count);
12 END;
13 /
T1 rows is :10
PL/SQL procedure successfully completed
SQL> select * from t1;
ID NAME DSC
--------------------------------------- ---------- --------------------
1 tom1 ok
2 tom2 ok
3 tom3 ok
4 tom4 ok
5 tom5 ok
6 tom6 ok
7 tom7 ok
8 tom8 ok
9 tom9 ok
10 tom10 ok
10 rows selected
【PL/SQL】 控制结构相关推荐
- PL/SQL控制结构
顺序结构 按先后顺序 分支判断结构 IF语句 IF condition THEN statements; [ELSIF condition THEN statements;] [ELSE statem ...
- (ORACLE)PL/SQL 编程
标识符的规范 1.定义变量,用v_作为前缀 2.定义常量,用c_作为前缀 3.定义游标,用_cursor作为后缀 4.定义列外,用e_作为前缀 块(block) PL\SQL的程序基本单元 编写PL\ ...
- oracle pl sql注意问题,Oracle PL/SQL编写PL/SQL代码的注意事项
(1)几个值得注意的关键字(2)变量常量赋值注意: ---------------------------------------------------------------------[@mor ...
- PL/Sql循序渐进全面学习教程(下)(ZT)
课程一.声明变量 本课重点: 1.了解基本的PLSQL块和区域 2.描述变量在PLSQL中的重要性 3.区别PLSQL与非PLSQL变量 4.声明变量 5.执行PL ...
- Oracle PL/SQL入门之慨述
一.PL/SQL出现的目的 结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,它属于第四代语言(4GL),其执行特点是非过程化,即不用 ...
- Oracle PL/SQL语言入门
一.背景介绍 结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方 ...
- 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》
本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...
- PL/SQL 处理流程
P249 -P254 oracle8i_9i数据库基础--查看本号百度文库 ***********PL/SQL 简介*************** 1.PL/SQL 是过程语言(Procedural ...
- 在Oracle中不通过存储过程一次执行多条SQL语句Oracle PL/SQL
PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL ...
最新文章
- 如何使用 Arthas 定位 Spring Boot 接口超时 ?
- php 截取字符串的方法,php截取字符串的方法介绍
- 1.2.1 算法的基本概念
- c语言程序设计 江宝钏 实验九,c语言程序设计,江宝钏著,实验九.docx
- trade-off 翻译
- matplotlib 绘制梯度下降求解过程
- 极度烧脑+惊人发现:4个颠覆你世界观的量子理论实验
- 浏览器打不开python的页面_robotframework,selenium启动不了打不开浏览器的问题访问不了网页...
- github生成燃尽图
- 【最短路径问题笔记】Floyd算法求多源最短路径问题
- 只显示 前100个字 java 实现截取字符串!使用! c:if test=${fn:length(onebeans.info)100 }${ fn:substri...
- Google是如何赚钱的 -- 四年工作离别小结
- mac/linux下java项目使用本机自带ssh和scp命令,自动复制上传并部署的脚本
- 实战:手把手教你开发React应用-郭永峰-专题视频课程
- Android开发方向,我们如何选择?
- OTFS调制中的干扰分析
- 下载丨66页PDF,云和恩墨技术通讯(2022年7月刊)
- java sha1加密ascii码_MD5,SHA1,SHA256,SHA512等常用加密算法
- 求给定正整数m以内的素数之和
- 浙江省计算机提前招分数线,【高考】2020年浙江省提前批各高校录取分数线汇总,建议收藏...
热门文章
- 某大型银行深化系统技术方案之十二:服务层之服务分类
- Windows 8 Directx 开发学习笔记(三)摄像机设置及控制正方体旋转
- 【转】Python之装饰器
- C# 利用SQLite对.DB和.logdb加密和解密和SQLite创建数据库
- 使用/调用 函数的时候, 前面加不加 对象或 this?
- java传递和返回对象
- (翻译)正确实施DevOps-The Lay of the Land
- 禁用并删除 Wordpress 文章修订(revision)记录
- Andriod UI设计之度量单位说明(DIP,DP,PX,SP)
- 在Flex中获取一个屏幕截图(Screenshot)并将其传递给ASP.NET