以下测试案例均来自于scott方案,运行前请确保该方案解锁。

1、条件分支状语

pl/sql中提供了三种条件分支状语,分别是:

if   then

if   then   else

if   then   else   if   then

1.1、if    then

编写一个过程.可以输出一个雇员名,如果该雇员的工资低于2000,就给该雇员的工资增加10%,

执行代码前,SMITH的SAL为800.代码如下:

create or replace procedure sp_pro6(spName varchar2) is
v_sal emp.sal%type;
begin
select sal into v_sal from emp where ename=spName;
if v_sal<2000 then
update emp set sal=sal*1.1 where ename=spName;
end if;
end; select * from emp;
call sp_pro6('SMITH');

执行sp_pro6过程.

ok,Smith的工资增加了80,说明成功执行

1.2、if   then   else

编写一个过程,可以输入一个雇员名,如果该雇员的补助不是0,就在原来的基础上加100,如果补助为0就把补助设为200

执行前,SMITH的补助为0,代码如下:

create or replace procedure sp_pro7(spName varchar2) is
v_comm emp.sal%type;
begin
select comm into v_comm from emp where ename=spName;
if v_comm<>0 then
update emp set comm=v_comm+100 where ename=spName;
else
update emp set comm=200 where ename=spName;
end if;
end;

执行过程

 call sp_pro7('SMITH');

ok,因为SMITH的补助为0所以直接变为200,说明代码执行成功

1.3、多重条件分支if   then   else if   else

编写一个过程,输入一个雇员的编号,如果该雇员的职位是PRESIDENT就给他的工资增加1000,如果该雇员的职位是MANAGER,就给他的工资增加500,其他雇员的工资增加200.

SMITH是CLERK,那么按照逻辑其SAL会增加200

create or replace procedure sp_pro8(spName varchar2) is
v_job emp.job%type;
begin
select job into v_job from emp where ename=spName;
if v_job='PRESIDENT' then
update emp set sal=sal+1000 where ename=spName;
elsif v_job='MANAGER' then
update emp set sal=sal+500 where ename=spName;
else
update emp set sal=sal+200 where ename=spName;
end if;
end;

执行过程

call sp_pro8('SMITH');

增加了200,ok,说明程序执行成功!!!

2、循环语句  -loop

是pl/sql中最简单的循环语句,这种循环语句以loop开头,以end loop结尾,这种循环至少会被执行一次。

2.1、编写一个过程,输入用户名,并循环添加10个用户到users表中,用户编号从1开始增加,代码如下:

create table users(id number(2),name varchar2(10));
create or replace procedure sp_pro5(spName varchar2) is
v_num number:=1;
begin
loop
insert into users values(v_num,spName);
exit when v_num=10;
v_num:=v_num+1;
end loop;
end;

ok,代码编写完成,开始执行,代码如下:

call sp_pro5('xiaochao');

ok,完成需求

2.2、while循环

基本循环至少执行一次,而对while循环来说,只有条件为true时,才会执行循环体语句,while循环以while.....loop开始,以end loop结束;

需求:编写一个过程,输入用户名,并循环添加10个用户到users表中,用户编号从11开始,代码如下:

create or replace procedure sp_pro4(spName varchar2) is
v_num number:=11;
begin
while v_num<=20
loop
insert into users values(v_num,spName);
v_num:=v_num+1;
end loop;
end;

ok,程序执行成功!

Oracle pl/sql编程值控制结构的更多相关文章

  1. ORACLE PL/SQL编程详解

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

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

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

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

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

  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编程之四: 把游标说透(不怕做不到,只怕想不到) 继上两篇:ORACLE PL ...

  6. [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)

    原文:[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) [顶]ORACLE PL/SQL编程详解之二: PL/SQL块结构和组成元素(为山九仞,岂一日 ...

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

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

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

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

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

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

随机推荐

  1. javafx 继承Application打开

    前段时间需要用到javafx的Application来写一些图形界面之类的东西,但是run了之后eclipese不会去运行它,很纳闷,然后看了一下run as发现是没有main入口 其实加上一个mai ...

  2. hdu 4284 Travel(壮压DP&TSP&floyd)

    Travel Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su ...

  3. Python-面向对象编程01_什么是面向对象

    Python从设计之初就已经是一门面向对象的语言了,正因如此,在Python中创建一个类和对象是很容易的. 什么是面向对象? 面向对象程序设计(Object-oriented programming, ...

  4. memcached整理の缓存问题

    声明:博客来源http://www.cnblogs.com/AloneSword/p/3931905.html,谢谢他的分享! 缓存穿透与缓存雪崩 缓存系统不得不考虑的另一个问题是缓存穿透与失效时的雪 ...

  5. [转发]Oauth 1.0 1.0a 和 2.0 的之间的区别有哪些?

    原文地址:http://www.zhihu.com/question/19851243

  6. Arduino I2C + 气压传感器LPS25H

    LPS25H是ST生产的MEMS数字气压传感器.主要特性有: 测量范围:260 ~ 1260 hPa绝对气压 分辨率:均方根1 Pa 工作电压:1.7 ~ 3.6 V 功耗:4μA(低分辨率模式)~2 ...

  7. DEV 之 有些控件不允许拖动。

    DEV 之 有些控件不允许拖动.  设置一个参数即可解决问题

  8. WinForm中的重绘 - 按钮等控件的背景渐变色重绘

    注:brush通过起止坐标来控制重绘范围及方向.比如从上到下渐变时,brush第二个Point参数是左下角坐标. private void PaintGradientBackground(Button ...

  9. [Android] Android MVP 架构下 最简单的 代码实现

    Android  MVP 架构下  最简单的 代码实现 首先看图: 上图是MVP,下图是MVC MVP和MVC的区别,在于以前的View层不仅要和model层交互,还要和controller层交互.而 ...

  10. 将整个文件读入string中

    size_t GetFileSize(FILE* file) { fseek(file, , SEEK_END); return static_cast<size_t>(ftell(fil ...