以下plsql程序用的scott用户的dept,emp表。

案例1

 --查询80,81,82,87年员工入职人数
set serveroutput on
declare cursor cemp is select to_char(hiredate,'yyyy') from emp;
count80 number :=0;
count81 number :=0;
count82 number :=0;
count87 number :=0;
phiredate varchar2(4) := ''; begin
open cemp; loop
fetch cemp into phiredate ;
exit when cemp%notfound; if phiredate = '' then count80 := count80 +1;
elsif phiredate = '' then count81 := count81 +1;
elsif phiredate = '' then count82 := count82 +1;
elsif phiredate = '' then count87 := count87 +1;
end if; end loop;
close cemp; dbms_output.put_line('total:'||(count80+count81+count82+count87));
dbms_output.put_line('1980:'||(count80 ));
dbms_output.put_line('1981:'||(count81));
dbms_output.put_line('1982:'||(count82));
dbms_output.put_line('1987:'||(count87)); end;
/

案例2

 --员工涨工资。从最低工资涨起每人涨10%,但是所有员工的工资总额不能超过5万元,请计算涨工资的人数和涨工资后的所有员工的工资总额

 set serveroutput on

 declare

 --定义光标:查询所有员工的员工号和工资
cursor cemp is select empno,sal from emp order by sal;
pempno emp.empno%type;
psal emp.sal%type; countEmp number := 0;
salTotal emp.sal%type; begin
--查询所有员工涨前的工资总额
select sum(sal) into salTotal from emp; open cemp;
loop
--涨前工资综合大于5000则退出循环
exit when salTotal > 50000 ; fetch cemp into pempno,psal; --若未从光标中取到值退出循环
exit when cemp%notfound; --若当前的工资总额加上 当前员工涨后的工资大于5万则退出循环
exit when salTotal +psal*0.1 >50000; update emp set sal = sal*1.1 where empno = pempno; countEmp := countEmp +1;
salTotal :=salTotal +psal*0.1; end loop;
close cemp;
commit; dbms_output.put_line('涨工资的人数是:'||countEmp);
dbms_output.put_line('涨后的工资总额是:'||salTotal); end;
/

案例3:

 --实现按部门分段(6000以上、(6000,3000)、3000元以下)统计各个工资段的职工人数、以及各部门的工资总额

 set serveroutput on

 declare 

     cursor cdept is select deptno from dept;
pdeptno dept.deptno%type; cursor cemp(dno number ) is select deptno,sal from emp where deptno = dno;
pdno emp.deptno%type;
psal emp.sal%type; count1 number := 0;
count2 number := 0;
count3 number := 0;
saltotal number := 0; begin open cdept; loop
fetch cdept into pdeptno ;
exit when cdept%notfound; open cemp(pdeptno);
saltotal := 0;
count1 := 0;
count2 := 0;
count3 :=0;
loop
fetch cemp into pdno,psal;
exit when cemp%notfound; if psal < 3000 then count1 :=count1+1;
elsif psal <= 6000 then count2:=count2+1;
elsif psal > 6000 then count3 := count3 +1;
end if;
saltotal := saltotal +psal;
end loop;
close cemp;
insert into msg values(pdno,count1,count2,count3,saltotal);
end loop; close cdept; commit;
end;
/

案例出处:http://www.imooc.com/learn/360

oralce plsql案例练习的更多相关文章

  1. Oralce Plsql 中文显示乱码问题无需修改注册表完美解决

    此方法在其它版系统也可以解决 win10-64 plsql oracle 11g绿色版客户端 错误现象: 因为oracle用的是绿色版,无法设置注册表,尝试以下方法. 解决方法: 1.在plsql中查 ...

  2. Python--DBUtil

    Python--DBUtil包 1 简介 DBUtils是一套Python数据库连接池包,并允许对非线程安全的数据库接口进行线程安全包装.DBUtils来自Webware for Python. DB ...

  3. Report_客制化以PLSQL输出XLS标记实现Excel报表(案例)

    2015-02-12 Created By BaoXinjian

  4. plsql 连接oralce数据库,报ora 12557 tns 协议适配器不可加载错误

    使用plsql 连接oracle 数据库报ora 12557 错误: 解决方案: 1:首先确保服务中的service以及监听器都开启 2:F:\app\Administrator\product\11 ...

  5. BEvent_客制化BusinessEvent通过PLSQL Procedurer接受消息传递(案例)

    2014-06-27 Created By BaoXinjian

  6. Report_客制化以PLSQL输出HTML标记实现WEB报表(案例)

    2014-05-31 Created By BaoXinjian

  7. oralce 仅配置精简客户端 连接plsql ( 版本需一直,要不都是32要不是都是64)

    1.Oracle服务器已经安装完成,版本10.2.0. 2.访问www.oracle.com,下载Oracle精简客户端. 下载页面地址:http://www.oracle.com/technetwo ...

  8. 【转】亲测plsql Developer配置免安装oralce客户端步骤

    原文地址:http://blog.csdn.net/bushy0401/article/details/11869461 再次用到Oracle了,机器上面也没有oracle客户端,还得去网上下载,直接 ...

  9. plsql连接oralce数据的配置 PLSQL配置怎么连ORACLE plsql连接多个数据库设置 Oracle 服务命名(别名)的配置及原理,plsql连接用

    Oracle 服务命名(别名)的配置及原理,plsql连接用 Oracle 服务命名(别名)的配置及原理 连接数据库必须配置服务命名(别名,用于plsql的连接),不管是本地还是远程,服务命名即简单命 ...

随机推荐

  1. 谈谈关键字new

    1.在情人节那天,无意间看到空间有人说,没有对象就new一个,然后就可以........ 程序中我们常用到X a=new X(), new在这里是创建一个对象,也可以叫做创建一个实例,我们先谈谈后半部 ...

  2. 关于java解析xml文件出现的问题

    DOM解析xml文件 问题1:导入javax.xml.parsers.DocumentBuilderFactory出现问题,如图: 解决办法是:由于创建工程时有个默认的jre,重新创建工程改掉就解决了 ...

  3. Redis进阶实践之三如何在Windows系统上安装安装Redis

    一.Redis的简介        Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合 ...

  4. java自定义注解知识实例及SSH框架下,拦截器中无法获得java注解属性值的问题

    一.java自定义注解相关知识 注解这东西是java语言本身就带有的功能特点,于struts,hibernate,spring这三个框架无关.使用得当特别方便.基于注解的xml文件配置方式也受到人们的 ...

  5. Flume(一)Flume原理解析

    前言 最近有一点浮躁,遇到了很多不该发生在我身上的事情.没有,忘掉这些.好好的学习,才是正道! 一.Flume简介 flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应 ...

  6. BZOJ:4825: [Hnoi2017]单旋

    Description H 国是一个热爱写代码的国家,那里的人们很小去学校学习写各种各样的数据结构.伸展树(splay)是一种数据结构,因为代码好写,功能多,效率高,掌握这种数据结构成为了 H 国的必 ...

  7. CodeForces776-A.Serial Killer-string

    A Serial Killer time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  8. addslashes() 函数返回在预定义字符之前添加反斜杠的字符串

    . 预定义字符是: 单引号(') 双引号(") 反斜杠(\) NULL 提示:该函数可用于为存储在数据库中的字符串以及数据库查询语句准备字符串. 注释:默认地,PHP 对所有的 GET.PO ...

  9. 数组的创建和各种API

    数组的创建方式: 1. 数组直接量 var arr = [] // 创建一个空数组 var arr = [1,2,3,4] // 创建同时初始化元素 2. 实例化对象 var arr=new Arra ...

  10. 可变数目参数----关键字params的使用

    如何定义和使用可变数目参数的方法,使用关键字params. 即其他语言的可变参数 Code public class App { static void Main() { //常规使用方法 Conso ...