if语句

oracle: elsif      java: else if

if (条件) then
pl/sql或sql语句
[elsif (条件) then ]
...可以有多个elsif
[else]
end if; ---必须写 结束大括号

例:

--完成根据员工的编号查看员工需要交的税的情况   大于等于3000交1%    大于等于1500交 0.5%,低于1500的不要交税
declare
v_empno emp.empno%type;
v_sal emp.sal%type;
v_name emp.ename%type;
v_rate emp.sal%type; --需要交的税
begin
v_empno :='&请输入员工编号';
select ename,sal into v_name,v_sal from emp where empno = v_empno;
if v_sal >= 3000 then
v_rate := v_sal*0.01;
elsif v_sal >= 1500 then
v_rate := v_sal*0.005;
else
v_rate := 0;
end if;
dbms_output.put_line('编号为'||v_empno||'的员工姓名:' || v_name
||',薪水:'||v_sal||',需要交的税:'||v_rate);
end;

swicth结构:oracle 的case   -decode 是对case的简写

case 等值判断

类似于java的switch

case  表达式
when 值1 then
...
when 值2 then
...
...
else
...
end case ;

例:

--查询员工的岗位, 显示的中文的
declare
v_empno emp.empno%type := '&请输入员工的编号';
v_job emp.job%type;
v_cJob emp.job%type;
begin
select job into v_job from emp where empno = v_empno;
case v_job
when 'CLERK' then
v_cJob :='文员';
when 'SALESMAN' then
v_cJob :='销售';
when 'MANAGER' then
v_cJob :='主管';
when 'ANALYST' then
v_cJob :='研发';
when 'PRESIDENT' then
v_cJob :='董事长';
else
v_cJob := '未知';
end case;
dbms_output.put_line(v_cJob);
end;

case 范围判断,等值(类似if)

case
when 条件 then
...
when 条件 then
...
...
else
...
end case;

例:

declare
v_empno emp.empno%type;
v_sal emp.sal%type;
v_name emp.ename%type;
v_rate emp.sal%type; --需要交的税
begin
v_empno :='&请输入员工编号';
select ename,sal into v_name,v_sal from emp where empno = v_empno;
/*
if v_sal >= 3000 then
v_rate := v_sal*0.01;
elsif v_sal >= 1500 then
v_rate := v_sal*0.005;
else
v_rate := 0;
end if;
*/
case
when v_sal >= 3000 then
v_rate := v_sal*0.01;
when v_sal >= 1500 then
v_rate := v_sal*0.005;
else
v_rate := 0;
end case;
dbms_output.put_line('编号为'||v_empno||'的员工姓名:' || v_name
||',薪水:'||v_sal||',需要交的税:'||v_rate);
end;

if ,case  if不能再sql语句中使用,   case 可以在sql语句中使用

--查询员工的信息,以及 >=3000  高新,   >=1500  中等收入, <1500 底薪   收入情况
-- 注意: *** sql语句中使用case, 不能使用end case, 使用end;
-- 而pl/sql块, case 的结束是一定使用 end case;
--decode() 函数, 在sql使用, 简化 case等值判断,
-- 在sql中使用范围判断, 使用case
select e.*, case
when e.sal >=3000 then '高新'
when e.sal >=1500 then '中等收入'
else '底薪'
end 收入情况
from emp e;

loop 循环 常用

Loop
Pl/SQL 语句
exit when 循环结束的条件;
end loop;

例:

--输出10次hello world
declare
v_str varchar2(30) :='hello world';
i number := 0;
begin
-- 类似do-while
loop
--oracle 没有 ++ -- i+=1
i:= i+1;
--输出helloworld
dbms_output.put_line(i||':'||v_str);
--退出循环
exit when i = 10;
end loop;
end;

while 循环

 while  条件  loop
--代码
end loop;

例:

--使用while来实现
declare
v_str varchar2(30) := 'hello world';
i number := 0;
begin
while i<10 loop
i := i+1;
dbms_output.put_line(i||':'||v_str);
end loop;
end;

for循环

从小到大:
for i in 最小值..最大值 loop
sql语句
end loop; i从小值, 每循环一次, 加1 , 加到最大值结束 从大到小:
for i in reverse 最小值..最大值 loop
sql语句
end loop; i从最大值, 每循环一次, 减1 , 减到最大值结束 --注意 这个i不需要我们声明

例:

-- 累加操作:  1+ 2+...+100
declare
sum1 number := 0;
begin
for i in 1..100 loop
sum1 := sum1 + i;
end loop;
DBMS_OUTPUT.PUT_LINE ('1到100的累加的和:'||sum1);
end; --打印 10,9,8,7,...1
begin
for i in reverse 1..10 loop
dbms_output.put_line(i);
end loop;
end;

Oracle--pl/sql编程-分支语句(判断、循环)的更多相关文章

  1. ORACLE PL/SQL编程详解

    ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...

  2. ORACLE PL/SQL编程详解(转)

    原帖地址:http://blog.csdn.net/chenjinping123/article/details/8737604 ORACLE PL/SQL编程详解 SQL语言只是访问.操作数据库的语 ...

  3. [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到)

    原文:[推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) [推荐]ORACLE PL/SQL编程之四: 把游标说透(不怕做不到,只怕想不到) 继上两篇:ORACLE PL ...

  4. [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)

    原文:[推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下) [推荐]ORACLE PL/SQL编程详解之一: PL/SQL 程序设计简介(千里之行,始于足下 ...

  5. ORACLE PL/SQL编程之八:把触发器说透

    原文:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之八: 把触发器说透 大家一定要评论呀,感谢!光发表就花了我将近一个下午. 本篇主要内容如下: 8.1 触发器类型 ...

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

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

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

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

  8. [强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)

    原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天 ...

  9. [推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼、百战不殆)

    原文:[推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼.百战不殆) [推荐]ORACLE PL/SQL编程之五: 异常错误处理(知已知彼.百战不殆) 继上三篇:ORACLE PL/S ...

  10. ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)

    原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!)   继上篇:ORACLE P ...

随机推荐

  1. Fiddler3 使用技巧

    1.Fiddler抓不到包怎么解决 (1)先确定是HTTP包抓不到还是HTTPS包抓不到.如果只是HTTPS包抓不到,说明是证书的问题,需要重新安装证书. (2)检查浏览器的HTTP代理设置是否正确, ...

  2. [线段树]Codeforces 339D Xenia and Bit Operations

    Xenia and Bit Operations time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  3. Java基础语法(4)-流程控制

    title: Java基础语法(4)-流程控制 blog: CSDN data: Java学习路线及视频 1.程序流程控制 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定 ...

  4. linux-manjaro下添加Yahei Hybrid Consola字体

    1.下载地址 http://www.win10zhijia.net/soft/20160921/3217.html 2.解压 unzip xxx 3.安装 sudo mkdir /usr/share/ ...

  5. pat 1044.火星数字 Java版

    个人网站:https://www.lingluan.xyz 火星人是以13进制计数的: 地球人的0被火星人称为tret. 地球人数字1到12的火星文分别为:jan, feb, mar, apr, ma ...

  6. 模块 face_recognition 人脸识别

    face_recognition 人脸识别 api 说明 1 load_image_file 将img文件加载到numpy 数组中 2 face_locations 查找图像中所有面部和所有面部特征的 ...

  7. [讲解]网络流最大流dinic算法

    网络流最大流算法dinic ps:本文章不适合萌新,我写这个主要是为了复习一些细节,概念介绍比较模糊,建议多刷题去理解 例题:codevs草地排水,方格取数 [抒情一下] 虽然老师说这个多半不考,但是 ...

  8. elasticsearch在linux上的安装,Centos7.X elasticsearch 7.6.2

    本文环境:Elasticsearch7.6.2目前最先版本   centos7.X     JDK1.8 elasticsearch介绍 官网:https://www.elastic.co/cn/pr ...

  9. linux压缩及归档

    一.解析 压缩:把大文件,通过压缩成一个比之前小的文件. 归档(打包):把多个文件,归档成一个文件. 二.压缩 1.zip(归档压缩,可以压缩目录,要保存源文件) 压缩:zip  压缩后的文件名 压缩 ...

  10. JQuery主要内容

    一.什么是JQuery jquery全称javaScript Query,是js的一个框架,本质上仍然是js 二.jQuery的特点 支持各种主流浏览器 使用特别简单 拥有丰富的插件和边界的插件扩展机 ...