create table CJ_CAL
(
cal_id number not null,
cal_date date,
constraint cj_calendar_pk primary key (cal_id)
)
commit
create sequence cj_cal_seq
minvalue 1
maxvalue 999999999
start with 1
increment by 1
nocycle
commit
/
create table CJ_EMP
(
emp_id number not null,
first_name varchar2(40),
last_name varchar2(40),
department varchar2(10),
station varchar2(10),
manager varchar2(40),
work_hours number,
schedule varchar2(400),
constraint cj_emp_pk primary key (emp_id)
)
commit
/
create sequence cj_emp_seq
minvalue 1
maxvalue 999999999
start with 1
increment by 1
nocycle
commit
/
create table CJ_STATUS
(
stat_id number not null,
stat_name varchar2(10),
constraint cj_status_pk primary key (stat_id)
)
commit
/
create table CJ_EMP_CAL
(
emp_cal_id number not null,
cal_id number not null,
emp_id number not null,
status number,
overtime number,
remark varchar2(400),
constraint cj_emp_cal_pk primary key (emp_cal_id)
)
commit
/
alter table cj_emp_cal
add constraint fk_cj_cal foreign key (cal_id)
references cj_cal (cal_id)
commit
/
alter table cj_emp_cal
add constraint fk_cj_emp foreign key (emp_id)
references cj_emp (emp_id)
commit
/
alter table cj_emp_cal
add constraint fk_cj_status foreign key (status)
references cj_status (stat_id)
commit
/
create sequence cj_emp_cal_seq
minvalue 1
maxvalue 999999999
start with 1
increment by 1
nocycle
commit
/
declare
v_date date := sysdate-60;
begin
for i in 1..120 loop
insert into cj_cal
values(cj_cal_seq.nextval, v_date);
v_date := v_date + 1;
end loop;
commit;
end;
insert into cj_emp(emp_id, first_name, last_name,
department, station, manager)
values(cj_emp_seq.nextval, 'Brandon', 'Hand',
'GSE', 'YHM', 'Cabral-Kevin')
commit
/
insert into cj_emp(emp_id, first_name, last_name,
department, station, manager)
values(cj_emp_seq.nextval, 'Nicholas', 'Bulthuis',
'GSE', 'YHM', 'Cabral-Kevin')
commit
/
insert into cj_emp(emp_id, first_name, last_name,
department, station, manager)
values(cj_emp_seq.nextval, 'Brian', 'Setchell',
'GSE', 'YHM', 'Cabral-Kevin')
commit
/
insert into cj_emp(emp_id, first_name, last_name,
department, station, manager)
values(cj_emp_seq.nextval, 'Ramon', 'Espada',
'GSE', 'YVR', 'Cabral-Kevin')
commit
/
insert into cj_emp(emp_id, first_name, last_name,
department, station, manager)
values(cj_emp_seq.nextval, 'Roberto', 'Santiago',
'GSE', 'YVR', 'Cabral-Kevin')
commit
/
insert into cj_emp(emp_id, first_name, last_name,
department, station, manager)
values(cj_emp_seq.nextval, 'Alex', 'Gillespie',
'GSE', 'YYC', 'Cabral-Kevin')
commit
/
insert into cj_emp(emp_id, first_name, last_name,
department, station, manager)
values(cj_emp_seq.nextval, 'Ralph', 'Westerterp',
'GSE', 'YEG', 'Cabral-Kevin')
commit
/
insert into cj_emp(emp_id, first_name, last_name,
department, station, manager)
values(cj_emp_seq.nextval, 'Bryan', 'Franklin',
'GSE', 'YWG', 'Cabral-Kevin')
commit
/
insert into cj_emp(emp_id, first_name, last_name,
department, station, manager)
values(cj_emp_seq.nextval, 'Corey', 'Perry',
'GSE', 'YQM', 'Cabral-Kevin')
commit
/
insert into cj_emp(emp_id, first_name, last_name,
department, station, manager)
values(cj_emp_seq.nextval, 'Gingrich', 'Matt',
'GSE', 'YHM', 'Cabral-Kevin')
commit
/
insert into cj_emp(emp_id, first_name, last_name,
department, station, manager)
values(cj_emp_seq.nextval, 'Irvine', 'Jodilynn',
'GSE', 'YHM', 'Cabral-Kevin')
commit
/
insert into cj_emp(emp_id, first_name, last_name,
department, station, manager)
values(cj_emp_seq.nextval, 'Gifford', 'Mackenzie',
'GSE', 'YHM', 'Cabral-Kevin')
commit
/
insert into cj_emp(emp_id, first_name, last_name,
department, station, manager)
values(cj_emp_seq.nextval, 'Kavanaugh', 'Brent',
'GSE', 'YHM', 'Cabral-Kevin')
commit
/
insert into cj_emp(emp_id, first_name, last_name,
department, station, manager)
values(cj_emp_seq.nextval, 'Downey', 'Robert',
'GSE', 'YHM', 'Cabral-Kevin')
commit
/
insert into cj_emp(emp_id, first_name, last_name,
department, station, manager)
values(cj_emp_seq.nextval, 'Armstrong', 'Ross',
'GSE', 'YHM', 'Cabral-Kevin')
commit
/
insert into cj_emp(emp_id, first_name, last_name,
department, station, manager)
values(cj_emp_seq.nextval, 'Gianni', 'Smerilli',
'GSE', 'YHM', 'Cabral-Kevin')
commit
/
insert into cj_emp(emp_id, first_name, last_name,
department, station, manager)
values(cj_emp_seq.nextval, 'Deschamps', 'Kevin',
'GSE', 'YHM', 'Cabral-Kevin')
commit
/
insert into cj_emp(emp_id, first_name, last_name,
department, station, manager)
values(cj_emp_seq.nextval, 'Joshua', 'Beam',
'GSE', 'YHM', 'Cabral-Kevin')
commit
/
insert into cj_emp(emp_id, first_name, last_name,
department, station, manager)
values(cj_emp_seq.nextval, 'Daniel', 'Linger',
'GSE', 'YHM', 'Cabral-Kevin')
commit
/
insert into cj_status
values(1,'PRESENT')
commit
insert into cj_status
values(2,'ABSENT')
commit
insert into cj_status
values(3,'OVERTIME')
commit
insert into cj_status
values(4,'VACATION')
commit
declare
v_status number;
v_overtime number;
begin
for i in (select cal_id, cal_date from cj_cal)
loop
for j in (select emp_id from cj_emp)
loop
if trunc(i.cal_date) < trunc(sysdate) then
v_status := round(dbms_random.value(1,4));
if v_status = 3 then --if overtime
-- random overtime hours
v_overtime := round(dbms_random.value(1,3));
end if;
insert into cj_emp_cal(emp_cal_id, cal_id, emp_id, status, overtime)
values(cj_emp_cal_seq.nextval, i.cal_id, j.emp_id, v_status, v_overtime);
v_overtime := null;
else
insert into cj_emp_cal(emp_cal_id, cal_id, emp_id)
values(cj_emp_cal_seq.nextval, i.cal_id, j.emp_id);
end if;
end loop;
end loop;
commit;
end;