Skip to content

Instantly share code, notes, and snippets.

@PrabhashwaraL
Last active March 2, 2020 10:35
Show Gist options
  • Save PrabhashwaraL/bd5d260902f29e392ff976e0c6ed0dfa to your computer and use it in GitHub Desktop.
Save PrabhashwaraL/bd5d260902f29e392ff976e0c6ed0dfa to your computer and use it in GitHub Desktop.
create type dept_t
/
create type emp_t as object(
empno char(6),
firstname varchar2(12),
lastname varchar2(15),
workdept ref dept_t,
sex char(1),
birthday date,
salary number(8,2)
)
/
create type dept_t as object(
deptno char(3),
deptname varchar2(36),
mgrno ref emp_t,
admrdept ref dept_t
)
/
create table oremp of emp_t(
constraint pk_oremp primary key(empno),
constraint nn_oremp empno not null,
constraint nn2_oremp firstname not null,
constraint nn3_oremp lastname not null,
constraint chk_oremp check (sex='M' or sex='m' or sex='F' or sex='f')
)
/
create table ordept of dept_t(
constraint pk_ordept primary key(deptno),
constraint nn_ordept deptno not null,
constraint nn_ordept deptname not null,
constraint fk_ordept foreign key(mgrno) references oremp,
constraint fk2_ordept foreign key(admrdept) references ordept
)
/
alter table oremp
add constraint fk_oremp foreign key(workdept) references ordept
/
insert into oremp values(
emp_t('000010', 'christine', 'hass', null, 'F', '31-AUG-1953', 72750)
)
/
insert into oremp values(
emp_t(000020, 'michael', 'thompson', null, 'M', '02-FEB-1968', 61250)
)
/
insert into oremp values(
emp_t(000030, 'sally', 'kwan', null, 'F', '11-MAY-1971', 58250)
)
/
insert into oremp values(
emp_t(000060, 'irving', 'stern', null, 'M', '07-JUL-1965', 55555)
)
/
insert into oremp values(
emp_t(000070, 'eva', 'pulaski', null, 'F', '26-MAY-1973', 56170)
)
/
insert into oremp values(
emp_t(000050, 'jhon', 'geyer', null, 'M', '15-SEP-1955', 60175)
)
/
insert into oremp values(
emp_t(000090, 'eileen', 'henderson', null, 'F', '15-MAY-1961', 49750)
)
/
insert into oremp values(
emp_t(000100, 'theodore', 'spenser', null, 'M', '18-DEC-1976', 46150)
)
/
insert into ordept values(
dept_t('A00', 'spiffy computer service div.', null, null)
)
/
insert into ordept values(
dept_t('B01', 'planning', null, null)
)
/
insert into ordept values(
dept_t('C01', 'information center', null, null)
)
/
insert into ordept values(
dept_t('D01', 'development center', null, null)
)
/
------------------------------------------------------------------------------
insert into ordept values(
dept_t('d01', development center, null, (select ref(d) from ordept d where d.admrdept='C01')
)
/
------------------------------------------------------------------------------
update oremp
set workdept = (select ref(a) from ordept a where deptno = 'A00')
where empno = 000010;
update oremp
set workdept = (select ref(a) from ordept a where deptno='B01')
where empno = 000020;
update oremp
set workdept = (select ref(a) from ordept a where deptno='C01')
where empno = 000030;
update oremp
set workdept = (select ref(a) from ordept a where deptno='D01')
where empno = 000060;
update oremp
set workdept = (select ref(a) from ordept a where deptno='D01')
where empno = 000070;
update oremp
set workdept = (select ref(a) from ordept a where deptno='B01')
where empno = 000050;
update oremp
set workdept = (select ref(a) from ordept a where deptno='B01')
where empno = 000090;
update oremp
set workdept = (select ref(a) from ordept a where deptno='B01')
where empno = 000100;
update ordept
set mgrno = (select ref(a) from oremp a where a.empno=000010 )
where deptno = 'A00';
update ordept
set mgrno = (select ref(a) from oremp a where a.empno=000020 )
where deptno = 'B01';
update ordept
set mgrno = (select ref(a) from oremp a where a.empno=000030 )
where deptno = 'C01';
update ordept
set mgrno = (select ref(a) from oremp a where a.empno=000060 )
where deptno = 'D01';
update ordept
set admrdept = (select ref(a) from ordept a where a.deptno = 'A00')
where deptno = 'A00';
update ordept
set admrdept = (select ref(a) from ordept a where a.deptno = 'A00')
where deptno = 'B01';
update ordept
set admrdept = (select ref(a) from ordept a where a.deptno = 'A00')
where deptno = 'C01';
update ordept
set admrdept = (select ref(a) from ordept a where a.deptno = 'C01')
where deptno = 'D01';
select d.deptname, d.mgrno.lastname
from ordept d;
select e.empno, e.lastname, e.workdept.deptname
from oremp e;
select d.deptno, d.deptname, d.admrdept.deptname
from ordept d;
select d.deptno, d.deptname, d.admrdept.deptname, d.mgrno.lastname
from ordept d;
select e.empno, e.firstname, e.lastname, e.salary, e.workdept.mgrno.lastname, e.workdept.mgrno.salary
from oremp e;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment