已经有创建一个表:
CREATE TABLE EMP1
(EMPNO NUMBER(4) NOT NULL PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(10),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) NOT NULL);
11、在emp表上创建一个触发器,当插入、删除或修改员工信息时,统计各个部门的人数及平均工资并输出。
12、创建一个包,包含一个过程和一个函数。过程以部门号为参数输出该部门中工资最高的员工名和员工号,函数以部门号为参数返回该部门员工的最高工资。
大家救我一命吧!
CREATE TABLE EMP1
(EMPNO NUMBER(4) NOT NULL PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(10),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) NOT NULL);
11、在emp表上创建一个触发器,当插入、删除或修改员工信息时,统计各个部门的人数及平均工资并输出。
12、创建一个包,包含一个过程和一个函数。过程以部门号为参数输出该部门中工资最高的员工名和员工号,函数以部门号为参数返回该部门员工的最高工资。
大家救我一命吧!
解决方案 »
- 求助:ORA-32036: 不支持 WITH 子句中串联式查询名的形式
- oracle 数据文件扩展问题
- 查询数据 用时间作过滤条件 条件写的不对 怎么纠正阿
- 大神 看看我的游标错在哪里啊?
- 存储过程中不明白的地方,请指教~
- oracle 安装完后,怎么没management server服务
- Win2003+Oracle10g 安装过程中OracleCSService无法启动
- 急啊,SQL要得到这样的结果?
- create table image(day date default to_date('01-02-2002','DD-MON-YYYY'))
- 关于游标为空的问题
- 关于ORACLE DataBase 10g Express Edition 是什么数据库,我是个人用户能用吗
- left join 后,左表怎样去掉重复记录呢?
11.--这不是和7一样的嘛!
create or replace trigger tri_change_emp
before insert or delete or update on emp
for each row
begin
for v_f in (
select deptno,count(*) cnt,avg(sal) avg_sal
from emp
group by deptno)
loop
dbms_output.put_line('deptno:'|| v_f.deptno||
' the number of employee:'||v_f.cnt||
' the Average wage:'||v_f.avg_sal);
end loop;
end tri_change_emp;
--12.自己测试测试吧
create or replace package pkg_emp as
function fun_max_sal(deptno_in in emp.deptno%type)
return number;
procedure pro_max_sal_emp(deptno_in in emp.deptno%type);
end pkg_emp;create or replace package body pkg_emp as
function fun_max_sal(deptno_in in emp.deptno%type)
as
max_sal number;
begin
select max(sal) into max_sal
from emp
where deptno=deptno_in;
return max_sal;
end fun_max_sal;procedure pro_max_sal_emp(deptno_in in emp.deptno%type)
as
v_ename emp.ename%type;
v_empno emp.empno%type;
begin
select ename,empno
into v_ename,v_empno
from emp
where sal=(
select max(sal)
from emp where deptno=deptno_in);
dbms_output.put_line(v_ename||' '||v_empno);
end pro_max_sal_emp;
end pkg_emp;
/
一般在表自身的触发器中不能再select 自己。
就算使用自治事务,也得不到插入、更新、删除之后
的各部门的人数及平均工资,而只能统计操作之前的。