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的连接),不管是本地还是远程,服务命名即简单命 ...
随机推荐
- [PHP] PHP与Apache的模块配合说明
1.当PHP需要在Apache服务器下运行时 一般来说,它可以mod_php5模块的形式集成, 此时mod_php5模块的作用是接收Apache传递过来的PHP文件请求,并处理这些请求, 然后将处理后 ...
- linux(五)之vi编译器
前面介绍了linux的常用命令和对文本的操作,接下来我将对大家领略一下vi编译器的强大功能.希望大家觉得写的还不错的话可以点个“推荐”哦! 一.vim/vi编译器简介 Vim/Vi是一个功能强大的全屏 ...
- CTF---密码学入门第六题 古典密码
古典密码分值:10 来源: 北邮天枢战队 难度:易 参与人数:5115人 Get Flag:1549人 答题人数:1783人 解题通过率:87% 密文内容如下{79 67 85 123 67 70 8 ...
- ex_gcd(个人模版)
ex_gcd: #include<stdio.h> #include<string.h> using namespace std; int x,y; int ex_gcd(in ...
- [51nod1709]复杂度分析
给出一棵n个点的树(以1号点为根),定义dep[i]为点i到根路径上点的个数.众所周知,树上最近公共祖先问题可以用倍增算法解决.现在我们需要算出这个算法精确的复杂度.我们定义计算点i和点j最近公共组先 ...
- java实现死锁的demo
死锁 只有当t1线程占用o1且正好也需要o2,t2此时占用o2且正好也需要o1的时候才会出现死锁,(类似于2个人拿着两个筷子吃饭,都是需要对方的一根筷子才能吃) 以下代码t1线程占用o1,并且获取到o ...
- Mysql开启远程连接方法
分类: 数据库开发技术 解决MySQL不允许从远程访问的方法 开启 MySQL 的远程登陆帐号有两大步: 1.确定服务器上的防火墙没有阻止 3306 端口. MySQL 默认的端口是 3306 ,需要 ...
- github 中删除仓库
删除时,填充的名字是库的名字
- 图像变换之Census变换
图像的Census变换 Census变换属于非参数图像变换的一种,它能够较好地检测出图像中的局部结构特征,如边缘.角点特征等.传统Census变换的基本思想是:在图像区域定义一个矩形窗口,用这个矩形窗 ...
- 【开发技术】Java生成验证码
Java生成验证码 为了防止用户恶意,或者使用软件外挂提交一些内容,就得用验证码来阻止,虽然这个会影响用户体验,但为了避免一些问题很多网站都使用了验证码;今天下午参考文档弄了一个验证码,这里分享一下; ...