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. Kafka 详解(转)

    转载自:https://blog.csdn.net/lingbo229/article/details/80761778 Kafka Kafka是最初由Linkedin公司开发,是一个分布式.支持分区 ...

  2. 998. 最大二叉树 II

    最大树定义:一个树,其中每个节点的值都大于其子树中的任何其他值. 给出最大树的根节点 root. 就像之前的问题那样,给定的树是从表 A(root = Construct(A))递归地使用下述 Con ...

  3. bash编程练习,带选项,添加或删除用户

    脚本练习题: 可以接受选项及参数,而后能获取每一个选项,及选项的参数,并能根据选项及参数做出特定的操作: 比如:adminusers.sh -a|--add user .. -d|--del user ...

  4. c# Dictionary<string, object> 转JSON字符串

    JavaScriptSerializer jss = new JavaScriptSerializer(); Dictionary<string, object> dict = new D ...

  5. Django ajax的简单使用、自定义分页器

    一. ajax初识 1. 前后端传输数据编码格式contentType 使用form表单向后端提交数据时,必须将form表单的method由默认的get改为post,如果提交的数据中包含文件,还要将f ...

  6. Hive面试准备

    Hive与HBase的区别Hive架构原理Hive的数据模型及各模块的应用场景Hive支持的文件格式和压缩格式及各自特点Hive内外表的区分方法及内外部差异Hive视图如何创建.特点及应用场景Hive ...

  7. Hive常用的10个系统函数及作用

    聚合函数 函数处理的数据粒度为多条记录. sum()—求和 count()—求数据量 avg()—求平均直 distinct—求不同值数 min—求最小值 max—求最人值 分析函数 Analytic ...

  8. 微信APP支付-java后台实现

    不说废话,直接上代码 先是工具类(注意签名时要排序): import java.io.BufferedReader; import java.io.ByteArrayInputStream; impo ...

  9. 【笔记3-26】Python语言基础

    编译型语言和解释型语言 编译型语言 C 先编译 解释型语言 Python 边执行边编译 Python的介绍 吉多·范罗苏姆 1991 解释型语言 Life is short you need Pyth ...

  10. varchar int 查询 到底什么情况下走索引?

    一个字符类型的.一个int类型的,查询的时候到底会不会走索引,其实很多工作了几年的开发人员有时也会晕,下面就用具体事例来测试一下. 1.  准备工作 先准备2张表,以备后续测试使用. 表1:创建表te ...