oracle中的控制语句
一、条件语句
1、流程控制-if else
(1)if
if 判断条件 then
...
end if;
(2)if-else
if 判断条件 then
...
else
...
end if;
(3)if-elsif
if 判断条件1 then
...
elsif 判断条件2 then
...
elsif 判断条件n then
...
end if;
(4)if-elsif-else
if 判断条件1 then
...
elsif 判断条件2 then
...
elsif 判断条件n then
...
else
...
end if;
例:
set serverout on;
declare
employee_number number;
begin
select count(*) into employee_count from employees where employee_age>30;
if employee_count>10 then
dbms_output.put_line('公司有年龄大于30的员工');
else
dbms_output.put_line('公司没有年龄大于30的员工');
end if;
end
统计年龄大于30的员工信息,存在多个条件判断(elsif)时如下:
declare
employee_number number;
begin
select count(*) into employee_count from employees where employee_age>30;
if employee_count=1 then
dbms_output.put_line('公司有1名年龄大于30的员工');
elsif employee_count>1 then
dbms_output.put_line('公司有多年龄大于30的员工');
else
dbms_output.put_line('公司没有年龄大于30的员工');
end if;
end
2、流程控制-case when
case when 与if else 有相同的效果。当需要匹配的情况较多时,可以使流程控制更加清晰
(1)case-when
case expression
when value1 then
...
when value2 then
...
when valuen then
...
end case;
(2)case-when-else
case expression
when value1 then
...
when value2 then
...
when valuen then
...
else
...
end case;
例:
declare employee_number number;
begin
select count(*) into employee_count from employees where employee_age>30;
case employee_count
when 1 then
dbms_output.put_line('公司有1名年龄大于30的员工');
when 0 then
dbms_output.put_line('公司没有年龄大于30的员工');
else
dbms_output.put_line('公司有多名年龄大于30的员工');
end case
end
二、循环语句
1、无条件循环-loop
loop
...
end loop;
例:
declare v_id number :=0;
v_name varchar2(20);
begin
loop
if v_id>=5 then
exit;--退出循环
end if;
v_id:=v_id+1;
select empolyee_name into v_name from employees where employee_id=v_id;
dbms_output.put_line(v_id||'号员工是'||v_name);
end loop;
end;
除了利用if判断退出循环外,还可以exit when的形式跳出循环
2、while循环
while 条件判断 loop
循环操作
end loop;
while指定循环条件,其后仍然跟loop,此处的loop循环与无条件循环中的loop完全相同,只是增加了while条件而已。
例:
declare v_id number :=0;
v_name varchar2(20);
begin
while v_id>=5
loop
v_id:=v_id+1;
select empolyee_name into v_name from employees where employee_id=v_id;
dbms_output.put_line(v_id||'号员工是'||v_name);
end loop;
end;
3、for循环
for .. in .. loop
...
end loop;
例:
declare v_id number :=0;
v_name varchar2(20);
begin
for v_id in 1..5
loop
v_id:=v_id+1;
select empolyee_name into v_name from employees where employee_id=v_id;
dbms_output.put_line(v_id||'号员工是'||v_name);
end loop;
end;
4、循环控制关键字
(1)continue:终止本次循环,进入下一次循环。
(2)exit:终止本层循环,进入下一层循环。oracle中没有break关键字,用exit代替。
(3)return:直接跳出存储过程或函数。
转自:https://blog.csdn.net/qq_17503037/article/details/79261510
oracle中的控制语句的更多相关文章
- Oracle中PL/SQL的执行部分和各种流程控制
Oracle中PL/SQL的执行部分和异常部分 一.PL/SQL的执行部分. 赋值语句. 赋值语句分两种,一种是定义一个变量,然后接收用户的IO赋值:另一种是通过SQL查询结果赋值. 用户赋值举例: ...
- Oracle中PL/SQL简介、基本语法以及数据类型
Oracle中PL/SQL简介.基本语法以及数据类型 一.PL/SQL简介. Oracle PL/SQL语言(Procedural Language/SQL)是结合了结构化查询和Oracle自身过程控 ...
- Oracle中SQL语句分类
Oracle中SQL语句分类如下:1.DML语句 insert/delete/update/select/merge/explan plan/lock table2.DDL语句 create/atlt ...
- Oracle中varchar,varchar2,nvarchar,nvarchar2的区别及其它数据类型描述
--varchar,varchar2 联系: 1.varchar/varchar2用于存储可变长度的字符串 比如varchar(20),存入字符串'abc',则数据库中该字段只占3个字节,而不是20个 ...
- Oracle中如何实现Mysql的两表关联update操作
在看<MySQL 5.1参考手册>的时候,发现MySQL提供了一种两表关联update操作.原文如下: UPDATE items,month SET items.price=month.p ...
- ORACLE中的LTRIM、RTRIM和TRIM
LTRIM.RTRIM和TRIM在ORACLE中的用法:1.LTRIM(C1,C2)其中C1和C2都可以字符串,例如C1是'Miss Liu',C2'MisL'等等.这是第一个和SQL SERVER不 ...
- oracle中临时表是用来做什么的
oracle中临时表是用来做什么的 某些情况下, 需要 多个非常大的表关联的情况下, 但是需要检索的, 是少量的数据的时候.可以先把 大表的数据, 检索出那一小部分, 然后插入到 临时表中, 最后再关 ...
- Oracle 中 decode 函数用法
Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译 ...
- ORACLE 中ROWNUM用法总结(转)
ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=) ...
随机推荐
- jQuery中onload与ready区别
onload和ready的区别document.ready和onload的区别为:加载程度不同.执行次数不同.执行速度不同.1.加载程度不同 document.ready:是DOM结构绘制完毕后就执行 ...
- 攻防环境配置大全(iss/apache/nginx/tomcat/jboss/weblogic)
一.IIS/apache/nginx/tomcat 介绍 1.asp aspx 只能在微软系统的iis中间件运行 [asp+IIS+access(扩展名为mdb)].aspx+mssql+iis结合, ...
- Openssl基本组成与应用
SSL与Openssl有什么关系? ssl是一种应用,表示安全的套接字层,是为那些明文应用提供加密机制的应用,openssl是一个实现该协议的库,当然还实现了其他很多东西,并且是open source ...
- python编写脚本,登录Github通过指定仓库指定敏感关键字搜索自动化截图生成文件【完美截图】
前言:为了避免开发人员将敏感信息写入文件传到github,所以测试人员需要检查每个仓库是否有写入,人工搜索审核比较繁琐,所以写一个脚本通过配置 配置文件,指定需要搜索的仓库和每个仓库需要搜索的关键字, ...
- ArrayList 源码分析和自定义ArrayList实现
概述 ArrayList 是基于数组实现的,是一个能自动扩展的动态数组. ArrayList 是线程不安全的,多线程情况下添加元素会出现数组越界的情况,而且数组赋值操作不是原子操作,会导致多线程情况下 ...
- 基于Netty实现自定义消息通信协议(协议设计及解析应用实战)
所谓的协议,是由语法.语义.时序这三个要素组成的一种规范,通信双方按照该协议规范来实现网络数据传输,这样通信双方才能实现数据正常通信和解析. 由于不同的中间件在功能方面有一定差异,所以其实应该是没有一 ...
- Python | Python语法基础
目录 前言 1. 变量与简单数据结构 2. 列表相关 3. 集合 4. If语句 5. 字典 6. 用户输入和while循环 7. 函数 8. 类与对象 9. 文件 10. 异常 11. 测试 最后 ...
- [bzoj1189]紧急疏散
二分答案+判定,对于一个答案,源点向每一个点连一条流量为1的边,每一扇门向汇点连一条流量为时间的边,每一个人向每一个在答案时间内能走到的门连一条流量为1的边,跑最大流并判断流量是否等于人数. 然而自从 ...
- [loj3304]作业题
(以下假设$T=(V,\{e_{1},e_{2},...,e_{n-1} \})$是一棵树) 根据莫比乌斯反演,有$\gcd(w_{1},w_{2},...,w_{e_{n-1}})=\sum_{d| ...
- [luogu5666]树的重心
考虑枚举一个点k,求其为重心的方案数暴力的做法是,将其作为根搜索,设最大子树大小为s1,次大为s2,对割掉的子树分类讨论:1.在子树中,分两种情况(都可以用线段树合并来做) (1)从s1中切掉一棵大小 ...