内容发布更新时间 : 2024/12/22 19:19:35星期一 下面是文章的全部内容请认真阅读。
使用pl/sql块编程实现,注意必要的异常处理。
1.输入一个员工号,输出该员工的姓名、薪金和工作时间(按年月日显示)。
Set serveroutput on Declare
V_ename scott.emp.ename%type; V_sal scott.emp.sal%type;
V_hiredate scott.emp. hiredate %type; Begin
Select ename, sal, hiredate into v_ename, v_sal, v_hiredate from scott.emp where empno=&empno;
Dbms_output.put_line('姓名:'|| v_ename||' 工资:'|| v_sal||' 工资日期:'||to_char(v_hiredate,'yyyy-mm-dd')); EXCEPTION
When no_data_found then
Dbms_output.put_line('输入编号有误!'); End; /
2.接收一个员工号,输出该员工所在部门的名称。
Set serveroutput on Declare
V_dname scott.dept.dname%type; Begin
select dname into v_dname from scott.dept a,scott.emp b where a.deptno=b.deptno and
1
b.empno=&empno;
Dbms_output.put_line('部门名称:'|| v_dname); EXCEPTION
When no_data_found then
Dbms_output.put_line('输入编号有误!'); End; /
3.接收一个部门号,如果该部门中员工职位是MANAGER,并且在DALLAS工作,那么就给他薪金加15%;如果该部门员工职位是CLERK,并且在NEW YORK工作,那么就给他薪金扣除5%;其他情况不作处理。
2
declare
v_deptno scott.emp.deptno%type:=&deptno; cursor emp_cursor is
select job,loc,sal from scott.emp,scott.dept where scott.emp.deptno in
(select scott.emp.deptno from scott.dept,scott.emp where scott.emp.deptno=scott.dept.deptno and scott.dept.deptno=v_deptno)for update of scott.emp.sal; begin
for emp_record in emp_cursor loop
if emp_record.job='CLERK' and emp_record.loc='NEW YORK'then
update scott.emp set sal=emp_record.sal*0.95 where current of emp_cursor;end if; if emp_record.job='MANAGER' and emp_record.loc='DALLAS'then
update scott.emp set sal=emp_record.sal*1.15 where current of emp_cursor; exit when emp_cursor%NOTFOUND; end if; end loop; end; /
4.接收一个员工号,输出这个员工所在部门的平均工资。
Set serveroutput on
3