This is an old revision of the document!
create table my_emp as select employee_id, first_name, last_name, salary, department_id from employees create table my_dep as select department_id, department_name from departments CREATE OR REPLACE VIEW EMPDEP ( FIRST_NAME, LAST_NAME, SALARY, DEPARTMENT_NAME) AS select first_name, last_name, salary, department_name from my_emp e, my_dep d where e.department_id = d.department_id
declare
dep_id my_dep.department_id%type;
begin
if :new.department_name is not null then
begin
select department_id into dep_id from my_dep where
department_name = :new.department_name;
exception
when no_data_found then
insert into my_dep (department_id, department_name)
values (hr_seq.nextval,:new.department_name)
returning department_id into dep_id;
end;
end if;
if inserting then
insert into my_emp (
FIRST_NAME,
LAST_NAME,
SALARY,
DEPARTMENT_ID)
values (
:new.first_name,
:new.last_name,
:new.salary,
dep_id);
elsif deleting then
delete from my_emp where
:old.last_name = last_name and
:old.first_name = first_name;
else
update my_emp set
first_name = nvl(:new.first_name, :old.first_name),
last_name = nvl(:new.last_name, :old.last_name),
salary = :new.salary,
department_id =
(select department_id from my_dep where
department_name = nvl(:new.department_name,:old.department_name))
where
first_name = :old.first_name and
last_name = :old.last_name;
end if;
end;