高分求解二道练习题,急急之(2)

gymdove 2004-06-29 12:19:34
1. 使用游标编写一个存储过程显示一个雇员所管理的所有雇员(如果雇员A归另雇员B管理,则雇员A的mgr等于雇员B的empno)。要求不能使用Oracle的树遍历查询命令。
2. 不使用游标完成上述功能,同样要求不能使用Oracle的树遍历查询命令。
3. 对于emp表要求控制每个部门的工资总和不能超过20000元,如果超过则应当拒绝其操作。编程实现这个功能。

...全文
82 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
beckhambobo 2004-07-03
  • 打赏
  • 举报
回复
1、编写一个过程
暂时在想
2、SELECT lpad(empno,' ',LEVEL*length(empno))
FROM emp
CONNECT BY PRIOR empno = mgr;
3、
create trigger emp_tri
before insert or update on emp
for each row
declare
num number;
begin
select sum(Sal) into num from emp where deptno=:new.deptno;
if num+:new.sal>20000 then
raise_application_error(-20000,'超出预算');
end if;
end;
/
以是触发报错,可以使用如下:
create view v_emp as select * from emp;
/
create trigger v_emp_tri
instead of insert or update v_emp
for each row
declare
num number;
begin
select sum(sal) into num from emp where deptno=:new.deptno;
if num+:new.sal>20000 then
raise_application_error(-20000,'超出预算');
end if;
end;
/
哪以后就直接对v_emp作插入与更新.
hot.wind 2004-07-03
  • 打赏
  • 举报
回复
1、不用oracle的树遍历查询需要用到临时表进行递归调用。类似BOM的展开运算。
2、不用游标可能没有办法实现。
3、为表emp增加一个触发器。
gymdove 2004-06-29
  • 打赏
  • 举报
回复
emp:
empno ename Job Mgr Hiredate Sal Comm deptno
7844 TUNER Sales 7678 08/09/81 1500 0 30
...
gymdove 2004-06-29
  • 打赏
  • 举报
回复
emp:
empno ename Job Mgr Hiredate Sal Comm deptno

一着急,给忘了,先谢了
dinya2003 2004-06-29
  • 打赏
  • 举报
回复
表结构呢?

17,377

社区成员

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

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