以下测试案例均来自于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. 开源SLAM

    GitHub 上优秀的开源SLAM repo (更新中):https://www.jianshu.com/p/464ca0d0c254 当前的开源SLAM方案:https://www.cnblogs. ...

  2. Android-ContentProvider读取/新增/操作系统联系人数据

    想要访问Android操作系统的ContentProvider就需要明白以下原理: 在Android操作系统里面的 /packsges/目录: apps: 很多的系统应用,例如:联系人,浏览器,音乐播 ...

  3. 【原创】插件式ICE服务框架

    Zero ICE在跨平台.跨语言的环境中是一种非常好的RPC方案,而且使用简单.早期在使用ICE时,每一个后端功能模块都以独立服务方式部署,在功能模块较少时不会有明显的问题,但是随着功能模块的增多,部 ...

  4. WPF MaterialDesignInXamlToolkit锁屏恢复后页面冻结的问题

    在做WPF项目时,用到 MaterialDesignInXamlToolkit 开源项目.结果客户用的时候发现这个问题,锁屏后,界面不刷新. 如果不用MaterialDesign,测试后不会出现这个问 ...

  5. 「NOIP 2013」 货车运输

    题目链接 戳我 \(Solution\) 这一道题直接用\(kruskal\)重构树就好了,这里就不详细解释\(kruskal\)重构树了,如果不会直接去网上搜就好了.接下来讲讲详细过程. 首先构建\ ...

  6. 6.margin塌陷问题

    当时说到了盒模型,盒模型包含着margin,为什么要在这里说margin呢?因为元素和元素在垂直方向上margin里面有坑. 我们来看一个例子: <!DOCTYPE html><ht ...

  7. django admin后台的简单使用

    创建自己的model.py文件 from django.db import models from django.contrib.auth.models import ( BaseUserManage ...

  8. java数据库学习

    //编写db类/* a加载驱动 驱动类要全路径 包名+类名 suround with try/catch * b设置参数url user pwd * c.连接数据库(import 'Connectio ...

  9. spring-第二章-AOP

    一,回顾 1.控制反转(IOC) 以前创建对象,由我们自己决定,现在我们把管理对象的声明周期权力交给spring; 2.依赖注入(DI) A对象需要B对象的支持,spring就把B注入给A,那么A就拥 ...

  10. form在模版中的渲 染方式

    链接:https://www.jianshu.com/p/46b2aa2d5a23 form.as_p 渲染表单为一系列的p标签,每个p标签包含一个字段: <p> <label fo ...