oralce plsql案例练习
以下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案例练习的更多相关文章
- Oralce Plsql 中文显示乱码问题无需修改注册表完美解决
此方法在其它版系统也可以解决 win10-64 plsql oracle 11g绿色版客户端 错误现象: 因为oracle用的是绿色版,无法设置注册表,尝试以下方法. 解决方法: 1.在plsql中查 ...
- Python--DBUtil
Python--DBUtil包 1 简介 DBUtils是一套Python数据库连接池包,并允许对非线程安全的数据库接口进行线程安全包装.DBUtils来自Webware for Python. DB ...
- Report_客制化以PLSQL输出XLS标记实现Excel报表(案例)
2015-02-12 Created By BaoXinjian
- plsql 连接oralce数据库,报ora 12557 tns 协议适配器不可加载错误
使用plsql 连接oracle 数据库报ora 12557 错误: 解决方案: 1:首先确保服务中的service以及监听器都开启 2:F:\app\Administrator\product\11 ...
- BEvent_客制化BusinessEvent通过PLSQL Procedurer接受消息传递(案例)
2014-06-27 Created By BaoXinjian
- Report_客制化以PLSQL输出HTML标记实现WEB报表(案例)
2014-05-31 Created By BaoXinjian
- oralce 仅配置精简客户端 连接plsql ( 版本需一直,要不都是32要不是都是64)
1.Oracle服务器已经安装完成,版本10.2.0. 2.访问www.oracle.com,下载Oracle精简客户端. 下载页面地址:http://www.oracle.com/technetwo ...
- 【转】亲测plsql Developer配置免安装oralce客户端步骤
原文地址:http://blog.csdn.net/bushy0401/article/details/11869461 再次用到Oracle了,机器上面也没有oracle客户端,还得去网上下载,直接 ...
- plsql连接oralce数据的配置 PLSQL配置怎么连ORACLE plsql连接多个数据库设置 Oracle 服务命名(别名)的配置及原理,plsql连接用
Oracle 服务命名(别名)的配置及原理,plsql连接用 Oracle 服务命名(别名)的配置及原理 连接数据库必须配置服务命名(别名,用于plsql的连接),不管是本地还是远程,服务命名即简单命 ...
随机推荐
- java_web学习(六) request对象中的get和post差异
1.get与post的区别 Get和Post方法都是对服务器的请求方式,只是他们传输表单的方式不一样. 下面我们就以传输一个表单的数据为例,来分析get与Post的区别 1.1 get方法 jsp中 ...
- Mac 安装 Gradle
首先下载 Gradle 通过官网进行下载 https://gradle.org 下载的文件名可能是 gradle-3.3-bin.zip 解压 将此文件解压到任意位置,如解压到 /usr/local ...
- Mvc 模板化的Razor引擎委托
最近在研究NopCommerce,它后台用的富文本编辑器可根据语言库加载不同语言的编辑器,其中用到了模板化Razor引擎委托,参考这儿 废话不多说,直接上代码. public static class ...
- Machine Learning - week 3
Classification 使用线性回归来分类,会很不准确.并且,它的范围也会超出 {0, 1}.所以使用下面的逻辑回归模型. Hypothesis representation 线性回归中 hθ( ...
- [51nod1291]Farmer
用单调栈的话不严格的O(n^3)可以轻松艹过去,统计的时候要差分. 可以发现,对于一个单调栈里的元素,从它进栈到出栈都会重复类似的计算..再差分一波后就可以只在出栈的时候计算一下了. 具体的话看代码吧 ...
- HDU1728-逃离迷宫-BFS
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- #if defined、#if !defined用法
大型程序或者修改别人的程序时,当我们需要定义常量(源文件还是头文件 ),我们就必须返回检查原来此常量是否已经定义, if defined宏 就是用于检测的. 举个例子,如下: #define .... ...
- Linux系统常用命令权威指南
<一>线上查询及帮助命令(2)1.man man [选项] [命令] 查看命令帮助,命令的词典,更复杂的还有info,但不常用. #man cd-a 显示所有的手册页,不只是显示第一个-f ...
- c#中winform窗口的隐藏与显示
最近在做一个C# 的winform客户端程序,要实现在打开新的窗口时将原来打开的窗口关闭,但是想在关闭新打开的窗口是将原来的那个窗口再次打开,在网上查找各种资料,找了很多代码,都是通过窗口.Hide( ...
- 【C#】数据库脚本生成工具(二)
年C#研发的数据库文档生成工具,给之后的工作带来了便利.近日,又针对该工具,用WinForm开发了数据库脚本生成工具-DbExcelToSQL. 下面数据库文档生成工具效果图: 感兴趣的朋友可以看下[ ...