实验5 SQL - PL编程基础(5)

2019-08-03 12:39

select deptno into v_deptno from emp where ename='SCOTT'; if

v_deptno='10' then

addsal:=100; elsif

v_deptno='20' then addsal:=300; else

addsal:=400; end if;

update emp set sal=sal+addsal where

ename='SCOTT';

dbms_output.put_line(sal); end;

给出运行测试结果:

3. 编写程序,计算显示部门人数最多的部门号、人数、工资总和,以及部门人数最少的部

门号、人数、工资总和。 写出程序源码:

给出运行测试结果:

4. 计算Exam_EMP中所有雇员的所得税总和。假设所得税为累进税率,所得税算法为:

工资收入为0-2000为免税;收入2000-3000者,超过2000的部分税率10%;3000-4000者超过3000部分按20%税率计算;4000-5000者超过4000部分按30%税率计算;5000以上收入,超过5000部分按40%税率计算。(请查阅累进税率的概念) 写出程序源码: Declare

sum_xx number:=0; xx number;

begin

select sum((sal-2000)*0.1) into xx from emp where sal>2000 and sal<=3000; sum_xx:=sum_xx+xx;

select sum((sal-3000)*0.2+100) into xx from emp where sal>3000 and sal<=4000;

第 21 页 共 24 页

sum_xx:=sum_xx+xx;

select sum((sal-4000)*0.3+300) into xx from emp where sal>4000 and sal<=5000; sum_xx:=sum_xx+xx;

select sum((sal-5000)*0.4+600) into xx from emp where sal>5000; sum_xx:=sum_xx+xx;

dbms_output.put_line(sum_xx); end;

给出运行测试结果:

5. 假设有个表如Exam_EMP,未建立主键,含有多条记录重复(列值完全相同),试编制

一个PL/SQL,将多余的重复记录删除。 写出程序源码: variable al number; begin :al:=1000; end; /

begin

dbms_output.put_line(:al); end; /

给出运行测试结果:

参照前面实验和教材,完成以下实验作业,给出源程序和测试结果。

6. 编写一个PL/SQL程序块,对名字以\或\开始的所有雇员按他们的基本薪水的10%

第 22 页 共 24 页

加薪。

写出程序源码:

declare

cursor

csr_AddSal

is

select * from emp where ENAME LIKE 'A%' OR ENAME LIKE 'S%' for update

OF SAL;

r_AddSal csr_AddSal%rowtype;

saleInfo emp.SAL%TYPE;

begin

for r_AddSal in csr_AddSal loop

dbms_output.put_line(r_AddSal.ENAME||'原来的工

资:'||r_AddSal.SAL);

saleInfo:=r_AddSal.SAL*1.1;

UPDATE emp SET SAL=saleInfo WHERE CURRENT OF csr_AddSal; dbms_output.put_line(r_AddSal.ENAME||'现在的工资:'||r_AddSal.SAL*1.1); end loop; end;

给出运行测试结果:

第 23 页 共 24 页

第 24 页 共 24 页


实验5 SQL - PL编程基础(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:社区调解案例

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: