以下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. Zabbix实战-简易教程--动作(Actions)--触发器

    一.概述 我们通过接入agent,采集了大量数据,但是如果采集到的某个指标超出了我预计的范围(阈值),此时我们希望监控系统能够给予邮件或短信报警,触发器就是替你干这个活的. 触发器表达式允许定义一个什 ...

  2. mysql数据库表结构与表约束

    表结构操作: 添加单列:alter table tb_name add [column] col_name 添加一列: alter table `sudty` add `aaa` int; 添加多列: ...

  3. 图书管理系统设置登录验证(cookies)

    先前做的图书管理登录页面虽然有那个页面,在你登录之后他会在数据库中查找值,然后验证,最后跳转到指定页面,,可是当你直接访问那个指定页面的时候不用登录也可以登录那个指定的页面: 由于前段时间已经做过图书 ...

  4. 在mac下使用终端命令通过ssh协议连接远程linux系统,代替windows的putty

    指令:ssh username@server.address.com 事例:wangmingdeMacBook-Pro:~ xxxxxxxxxx$ ssh root@XXXX.net The auth ...

  5. 新手必须掌握的Linux命令

    一.命令组成 一个完整的命令通常由  命令名称 [命令参数] [命令对象]  组成. 注意:命令名称.命令参数.命令对象之间用空格键隔开. 二.系统工作命令 查看主机名称 echo $HOSTNAME ...

  6. HDU 2296:Ring

    Problem Description For the hope of a forever love, Steven is planning to send a ring to Jane with a ...

  7. 设置Sql server用户对表、视图、存储过程、架构的增删改查权限

    根据数据库Schema限制用户对数据库的操作行为 授予Shema dbo下对象的定义权限给某个用户(也就是说该用户可以修改架构dbo下所有表/视图/存储过程/函数的结构) use [Your DB N ...

  8. 程序员之殇 —— (The Beginning of the End)噩梦、崩坏

    Look at all those faces out there (当我环视周遭的一张张脸孔) We are so different(我们是如此的不同) But we have one thing ...

  9. EntityFramework默认映射规则

    我不太习惯通过CodeFirst去维护数据库(尽管这是未来实现自动编程的必经之路),还是喜欢通过数据库设计工具如PowerDesigner去建表.如果不想对EF的实体和数据表做什么映射的话,就要注意默 ...

  10. 随手小代码——《Python编程 从入门到实践》项目1:外星人入侵

    =================================版权声明================================= 版权声明:原创文章 禁止转载  请通过右侧公告中的“联系邮 ...