All pastes #2060045 Raw Edit

Miscellany

public text v1 · immutable
#2060045 ·published 2011-05-15 10:48 UTC
rendered paste body
drop table t1;
/
commit;
/
create table t1 of Student
(
constraint pk_t1 primary key(Identif)
)object identifier is primary key;
/
declare
n number;
dat date;
addr address;
un Universitet;
begin
  n:=Student.getid;
  dat:=current_date;
  insert into t1(identif,Lastname,firstname,middlename,datebirth,adr,unv) values(n,to_char(n),'222','333',dat,addr,un);
  n:=Student.getid;
  insert into t1(identif,Lastname,firstname,middlename,datebirth,adr,unv) values(n,to_char(n),'222','333',dat,addr,un);
  n:=Student.getid;
  insert into t1(identif,Lastname,firstname,middlename,datebirth,adr,unv) values(n,to_char(n),'222','333',dat,addr,un);
  n:=Student.getid;
  un:=Universitet('БГТУ',address);
  insert into t1(identif,Lastname,firstname,middlename,datebirth,adr,unv) values(n,to_char(n),'222','333',dat,addr,un);
  n:=Student.getid;
  insert into t1(identif,Lastname,firstname,middlename,datebirth,adr,unv) values(n,to_char(n),'222','333',dat,addr,un);
end;
/
select * from t1;
/
delete from t1;
/
declare
un Universitet;
begin
  un:=Universitet('БГТУ',address);
  update t1 set unv=un where identif = 148;
end;
/
declare
iden number;
begin
  iden:=Student.getid;
  update t1 set identif=iden where identif = 116;
end;
/
delete from t1 where identif = 113;
/
create or replace  type fv1 as object
(
id number(10),
sLastname varchar2(20),
sfirstname varchar2(1),
smiddlename varchar2(1),
addr address,
unname varchar2(20)
)
/
create view v1 of fv1 with object identifier(id)
as 
select item.identif id, item.Lastname sLastname, substr(item.firstname,1,1) sfirstname, substr(item.middlename,1,1) smiddlename, Treat(item.adr as address) addr, Treat(item.unv as UNIVERSITET).Name_Universitet unname from t1 item;
/
select * from v1;
/
drop view v1;
/
create or replace type progress as object
(
id number(10),
dt date,
subject varchar(20),
typectr varchar(20),
mark number(2)
)
/
drop type progress;
/
create table t2 of progress
(
constraint pr_pk primary key(id,dt,subject),
constraint fk foreign key(id) references t1(identif)
)
/
drop table t2;
/
declare
type tc is ref cursor;
cur tc;
str1 varchar2(20):='subject1';
str2 varchar2(20):='subject2';
d1 date:=to_date('01.01.2011');
d2 date:=to_date('21.04.2011');
n number(10);
begin 
open cur for select identif from t1;
for i in 1..5
loop
  fetch cur into n;
  insert into t2(id,dt,subject,typectr,mark) values(n,d1,str1,'Экзамен',i*2);
  insert into t2(id,dt,subject,typectr,mark) values(n,d2,str2,'Зачет',i+4);
end loop;
end;
/
select * from t2;
/
delete from t2;
/
create or replace type fv2 as object
(
id number(10),
rt number(10)
)
/

create view v2 of fv2 with object identifier(id)
as 
select o.id id,sum(o.mark) from t2 o group by o.id order by o.id;
/
drop view v2;
/
select * from v2;
/
create or replace type fv3 as object
(
id number(10),
sLastname varchar2(20),
sfirstname varchar2(1),
smiddlename varchar2(1),
unname varchar2(20),
rt number(10)
)
/
create view v3 of fv3 with object identifier(id)
as 
select o1.id id,o1.sLastname,o1.sfirstname,o1.smiddlename,o1.unname,o2.rt from v1 o1 join v2 o2 on o1.id = o2.id;
/
select * from v3 order by rt desc;
/
update t2 set mark = 8 where id = 151 and subject='subject1';