Oracle上机练习(PL/SQL部分)
沃克IT教育javaee软件工程师
一、 求1-100之间的素数
1 declare
2 flag boolean := true; 3 begin
4 for i in 2..100 loop 5 flag := true; 6 for j in 2..i-1 loop 7 if i mod j = 0 then 8 flag := false; 9 end if; 10 end loop; 11 if flag then
12 dbms_output.put_line(i); 13 end if; 14 end loop; 15 end;
二、 对所有员工,如果该员工职位是MANAGER,并且在DALLAS工作那么就给他薪金加15%;如果该员工职位是CLERK,并且在NEW YORK工作那么就给他薪金扣除5%;其他情况不作处理 SQL> declare
2 l_emp t_emp%rowtype; 3 l_loc t_dept.loc%type;
4 cursor cur_emp is select *from t_emp; 5 begin
6 open cur_emp; 7 loop
8 fetch cur_emp into l_emp; 9 exit when cur_emp%notfound;
10 select loc into l_loc from t_dept where deptno=l_emp.deptno; 11 if l_emp.job='MANAGER' and l_loc='DALLAS' then 12 update t_emp set sal=sal*1.15 13 where empno=l_emp.empno; 14 end if;
15 if l_emp.job='CLERK' and l_loc='NEW YORK' then 16 update t_emp set sal=sal*0.95 17 where empno=l_emp.empno; 18 end if; 19 end loop;
20 close cur_emp; 21 end; 22 / PL/SQL 过程已成功完成。 三、对直接上级是'BLAKE'的所有员工,按照参加工作的时间加薪: 81年6月以前的加薪10% 81年6月以后的加薪5% 三、 根据员工在各自部门中的工资高低排出在部门中的名次(允许并列). 四、编写一个触发器实现如下功能: 对修改职工薪金的操作进行合法性检查: a) 修改后的薪金要大于修改前的薪金 b) 工资增量不能超过原工资的10% c) 目前没有单位的职工不能涨工资 四、 编写一个PL/SQL程序块,对名字以\或\开始的所有雇员按他们的基本薪水的10%加薪。 五、编写一PL/SQL,对所有的\销售员\增加佣金500. 六、编写一PL/SQL,以提升两个资格最老的\职员\为\高级职员\。(工作时间越长,优先级越高) 七、编写一PL/SQL,对所有雇员按他们基本薪水的10%加薪,如果所增加的薪水大于5000,则取消加薪。 八、显示EMP中的第四条记录。 九、.编写一个给特殊雇员加薪10%的过程,这之后,检查如果已经雇佣该雇员超过60个月,则给他额外加薪3000.