oracle PL/SQL习题

(1)编写一个PL/SQL块,输出所有员工的员工姓名、员工号、工资和部门号。

declare
  v_emp scott.emp%rowtype;
  cusor a is select empno,ename,sal,deptno from emp;
begin 
open a ;
  loop
  fetch a into v_emp;
  exit when a%notfound;
  dbms_output.put_line(v_emp.empno||’ ‘||v_emp.ename||’ ‘||v_emp.sal||’ ‘);
  end loop;
close a;
end;

(2)编写一个PL/SQL块,输出所有比本部门平均工资高的员工信息。

Declare
  V_emp scott.emp%rowtype;
  Cursor a is select * from emp a where sal >(select avg(sal) from emp b where a.deptno=b.deptno )
 Begin 
   Open a 
   Loop 
Fetch a into v_emp;
Exit when a%notfound;
Dbms_output.put_line(v_emp.ename||’ ‘||v_emp.empno||’ ‘||v_emp.sal||’ ‘||v_emp.depno);
End loop;
Close a;
End;

(3)编写一个PL/SQL块,输出所有员工及其部门领导的姓名、员工号及部门号。

Declare
 V_emp scott.emp%rowtype;
 Cursor a is select a.ename,a.empno,a.deptno,b.ename mname from emp a inner join emp m on e.empno=m.mrg
Begin 
For v_emp in a
loop
    Dbms_output.put_line(v_emp.empno||' '||v_emp.deptno||' '||v_emp.ename||' 
'||v_emp.mname);
 End loop;
End;

(4)查询姓为“SMITH”的员工信息,并输出其员工号、姓名、工资、部门号。
– –如果该员工不存在,则插入一条新记录,员工号为2012,员工姓名为“Smith”,工资为7500元,入职日期为“2002年3月5日”,部门号为50。
– –如果存在多个名“Smith”的员工,则输出所有名为“Smith”的员工号、姓名、工资、入职日期、部门号L。

Declare 
  V_emp emp%rowtype;
Begin 
  Select * into v_emp from emp where ename=’Smith’;
   Dbms_ouput.put_line(v_emp.empno||’ ‘||v_emp.ename||’ ‘||v_emp.sal||’ ‘||v_emp.deptno);
   Exception 
      When no_data_found then 
      Insert into emp(2012,’Smith’,7500,’5-3月-2002’,50);
      When too_many_rows then
        For v_emp in (select * from emp where ename=’Smith’)
        Loop
        Dbms_output.put_line(v_emp.empno||’ ‘ ||v_emp.ename||’ ‘||v.emp.sal||’ ‘||v_emp.hiredate||’ ‘||v_emp.deptno);
End loop;
End;
  • 10
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值