oracle 存储过程 各位朋友帮忙 初学者

yanqiu520happines 2011-07-25 10:16:24
1.建立一个存储过程用来接收一个部门号,找出其中的两位最老的员工的员工号,并打印。

2.编写一个过程用来传入一个员工号,在emp表中删除一个员工,当该员工是该部门的最后一个员工时就在dept表中删除该员工所在的部门。
...全文
65 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanqiu520happines 2011-07-26
  • 打赏
  • 举报
回复

非常感谢大侠!!
create or replace procedure getEmpno(v_empno number)
as
v_name varchar2(20);
cursor v_e is select * from emp where empno=v_empno order by hiredate;
begin
open v_e;
fetch v_e into v_name;
dbms_output.put_line(v_name);
fetch v_e into v_name;
dbms_output.put_line(v_name);
close v_e;
end;
/

create or replace procedure getEmpno2(v_empno number)
as
v_count number;
v_deptno number;
begin
select deptno into v_deptno from emp where empno=v_empno;
select count(*) into v_count from emp where deptno=v_deptno;
if v_count=1 then
delete from emp where empno=v_empno;
delete from dept where deptno=v_deptno;
else
delete from emp where emppno=v_empno;
end if;
end;
/


tangren 2011-07-25
  • 打赏
  • 举报
回复
--写一个吧,作为范例,第二题自己写
CREATE OR REPLACE PROCEDURE p_get_emp(i_deptno NUMBER) IS
BEGIN
FOR c IN (SELECT empno
FROM (SELECT empno
FROM emp t
WHERE t.deptno = i_deptno
ORDER BY hiredate)
WHERE rownum < 3) LOOP
dbms_output.put_line('empno=' || c.empno);
END LOOP;
END;
/
liuyyuns 2011-07-25
  • 打赏
  • 举报
回复
你这是作业题?

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧