以下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. 有关python下二维码识别用法及识别率对比分析

    最近项目中用到二维码图片识别,在python下二维码识别,目前主要有三个模块:zbar .zbarlight.zxing. 1.三个模块的用法: #-*-coding=utf-8-*- import ...

  2. 循序渐进之Spring AOP(2) - 基本概念

    学习AOP前要先了解几个重要术语:Joinpoint.Pointcut.Advice 仍然以改装车比喻,拿到心爱的汽车后想做改装,第一件事是什么?找到要改装的地方.车上可改装的地方很多,但每个人感兴趣 ...

  3. 1c19b35b005744d55261682b361804fa 如何破解经过 MD5 算法处理的信息?

    Md5密文破解(解密)可以说是网络攻击中的一个必不可少的环节,是工具中的一个重要"辅助工具".md5解密主要用于网络攻击,在对网站等进行入侵过程,有可能获得管理员或者其他用户的账号 ...

  4. botzone Tetris2

    为了证明窝最近没有颓废 (并且为了多骗点访问量 游戏链接:https://botzone.org/game/Tetris2 大概就是先写个估价,然后剪剪枝搜它4步. #include<iostr ...

  5. BZOJ-USACO被虐记

    bzoj上的usaco题目还是很好的(我被虐的很惨. 有必要总结整理一下. 1592: [Usaco2008 Feb]Making the Grade 路面修整 一开始没有想到离散化.然后离散化之后就 ...

  6. android企业级商城源码、360°全景图VR源码、全民直播源码等

    Android精选源码 [新版]Android技术博客精华汇总 开源了:乐乐音乐5.0-Android音乐播放器 android实现仿真水波纹效果源码 360°全景图VR,这是一个值得把玩的APP a ...

  7. React Native学习(四)—— 写一个公用组件(头部)

    本文基于React Native 0.52 Demo上传到Git了,有需要可以看看,写了新内容会上传的.Git地址 https://github.com/gingerJY/React-Native-D ...

  8. [国嵌笔记][030][U-Boot工作流程分析]

    uboot工作流程分析 程序入口 1.打开顶层目录的Makefile,找到目标smdk2440_config的命令中的第三项(smdk2440) 2.进入目录board/samsung/smdk244 ...

  9. java实现死锁的demo

    死锁 只有当t1线程占用o1且正好也需要o2,t2此时占用o2且正好也需要o1的时候才会出现死锁,(类似于2个人拿着两个筷子吃饭,都是需要对方的一根筷子才能吃) 以下代码t1线程占用o1,并且获取到o ...

  10. windows下更改mysql数据储存物理目录

    windows10 1.停止mysql服务 以管理员身份运行cmd 输入命令 net stop mysql57 (我的mysql版本是5.7的,具体名称以你当前版本为主) 也可以打开任务管理器找到上面 ...