Вы находитесь на странице: 1из 19

create table sumi(a number(2) primary key,b varchar(20) check(b IN ('a','b')),d

date default sysdate check(TO_CHAR(d,'mm')between '02' and '05'));


create table apa(j number(3) primary key,k number(3) check(k>=2 and k<100),a1 nu
mber(2) references sumi(a),h varchar(15) check((substr(h,1,1))=upper(substr(h,1,
1))));
desc sumi;
desc apa;
alter
alter
alter
alter
insert
insert
insert
);
insert
);
select

table
table
table
table

sumi add q number(4);


sumi modify q varchar(10);
apa add w as (j*k);
apa add w1 number(5);

into sumi values(1,'a',to_date('10-02-2014','dd-mm-yyyy'),12);


into sumi values(2,'b',to_date('10-05-2014','dd-mm-yyyy'),12);
into sumi(a,b,d) values(v1.nextval,'b',to_date('10-05-2014','dd-mm-yyyy')
into sumi(a,b,d) values(v1.nextval,'b',to_date('10-05-2014','dd-mm-yyyy')
* from sumi;

update sumi set q='mda' where a=5;


insert
insert
insert
insert
insert
select

into apa(j,k,a1,h) values(100,10,2,'Muc');


into apa(j,k,a1,h) values(101,99,1,'Muc');
into apa(j,k,a1,h) values(103,20,1,'Jet');
into apa(j,k,a1,h) values(102,53,2,'Jet');
into apa(j,k,a1) values(104,53,2);
* from apa;

update
update
update
case J

apa set w1=k*a1;


sumi set q='teranovva' where a=1;
apa set h=
when 100 then 'Mucles'
when 101 then 'Macho'
when 102 then 'Jet'
when 103 then 'Jet'
end;

delete from apa where j=102;


delete from apa where K in(10);
create sequence v1;
insert into apa(j,k,a1,h) values(v1.nextval,53,2,'Jet');
alter
alter
alter
alter
alter
insert
insert
insert
insert
insert

table
table
table
table
table
into
into
into
into
into

apa drop column w;


sumi modify d check(TO_CHAR(d,'mm')between '01' and '06');
sumi modify q not null;
apa add primary key(j);
apa add check(j between 1 and 105);
apa(j,k,a1,h) values(100,10,2,'Muc');
apa(j,k,a1,h) values(101,99,1,'Muc');
apa(j,k,a1,h) values(103,20,1,'Jet');
apa(j,k,a1,h) values(102,53,2,'Jet');
apa(j,k,a1) values(104,53,2);

select j,k,a1,nvl(h,'Nu este diponibil')as nv1 from apa where h is null;


select j,k,decode(j,100,k+10,101,k+1,103,k+5,k+7)as k1 from apa;

select j,k,decode(h,null,'NU','DA')cum from apa;


select k,case when k<20 then 'cat1'
when k<50 then 'cat2'
when k<100 then 'cat3'
else 'cat4'
end a
from apa;
insert
insert
insert
);
insert
);
insert
select
select
select
select
select

into sumi values(1,'a',to_date('10-02-2014','dd-mm-yyyy'),12);


into sumi values(2,'b',to_date('10-05-2014','dd-mm-yyyy'),12);
into sumi(a,b,d) values(v1.nextval,'b',to_date('10-05-2014','dd-mm-yyyy')
into sumi(a,b,d) values(v1.nextval,'b',to_date('10-05-2014','dd-mm-yyyy')
into sumi values(7,'a',to_date('10-06-2014','dd-mm-yyyy'),12);
* from sumi;
* from apa;
a,b,q,d from sumi where to_char(d,'mm')=to_char(sysdate,'mm');
round(avg(j),2) me from apa;
min(avg(k)) from apa group by a1;

CREATE TABLE Profesori_oa( codprof NUMBER(3) CONSTRAINT pk_codprof_oa PRIMARY KE


Y, numeprof VARCHAR2(99),catedra VARCHAR2(49));
CREATE TABLE EvalProf_oa(codprof NUMBER(3) CONSTRAINT fk_cod_oa REFERENCES Profe
sori_oa(codprof), numecurs VARCHAR2(22),notastud NUMBER(2),
notacatedra NUMBER(2));
CREATE SEQUENCE seq_codprof_oa;
INSERT INTO Profesori_oa VALUES(seq_codprof_oa.nextval,'Mihailescu Radu','Econom
ie');
INSERT INTO Profesori_oa VALUES(seq_codprof_oa.nextval,'Johnny Teperu','Marketin
g');
INSERT INTO Profesori_oa VALUES(seq_codprof_oa.nextval,'Maria Ioana','Management
');
SELECT * FROM Profesori_oa;
INSERT INTO EvalProf_oa VALUES(1,'Economie generala',8,8);
INSERT INTO EvalProf_oa VALUES(1,'Administrarea afacerii',7,8);
INSERT INTO EvalProf_oa VALUES(2,'Promovarea produselor',10,9);
INSERT INTO EvalProf_oa VALUES(2,'Plan de afaceri',10,10);
INSERT INTO EvalProf_oa VALUES(3,'Management',8,7);
INSERT INTO EvalProf_oa VALUES(3,'Management aprofundat',9,9);
INSERT INTO EvalProf_oa VALUES(3,'Management boschetat',10,10);
select * from evalprof_oa;
select numecurs,numeprof from PROFESORI_OA,EVALPROF_OA where PROFESORI_OA.CODPRO
F = EVALPROF_OA.CODPROF ;
select numecurs,count(numeprof)NrProf from PROFESORI_OA,EVALPROF_OA where PROFES
ORI_OA.CODPROF=EVALPROF_OA.CODPROF group by numecurs;
select numeprof,((notastud+notacatedra)/2)MedieN from PROFESORI_OA,EVALPROF_OA w
here PROFESORI_OA.CODPROF=EVALPROF_OA.CODPROF and catedra like 'Management' and
numecurs like 'Management'order by medien desc;
select numeprof, count(*)NrMaterii from EVALPROF_OA,PROFESORI_OA where PROFESORI
_OA.CODPROF = EVALPROF_OA.CODPROF group by numeprof having count(*)>1;
select numeprof,((notastud+notacatedra)/2)Medie from EVALPROF_OA,PROFESORI_OA wh
ere PROFESORI_OA.CODPROF = EVALPROF_OA.CODPROF and ((notastud+notacatedra)/2)=(s
elect max((notastud+notacatedra)/2) from evalprof_oa);
select codprof, (sum(notastud)/count(codprof))MeN from EVALPROF_OA GROUP BY CODP
ROF order by men desc;
select * from (select numeprof, (sum(notastud)/count(EVALPROF_OA.codprof))MeN fr

om EVALPROF_OA,profesori_oa where profesori_oa.CODPROF = EVALPROF_OA.CODPROF GRO


UP BY numeprof order by men desc) where rownum<=3;
select numecurs n,min(notastud) m from EVALPROF_OA group by numecurs;
select codprof,numecurs,notastud from EVALPROF_OA,(select numecurs n,min(notastu
d) m from EVALPROF_OA group by numecurs)where numecurs=n and notastud=m;
select * from EVALPROF_OA where codprof=1 union select * from evalprof_oa where
codprof=2;
select * from EVALPROF_OA where codprof between 1 and 2;
set serveroutput on;
declare
a number;
begin
a:=3;
a:=1;
DBMS_OUTPUT.PUT_LINE('Saru-mana!'||a);
END;
/
CREATE TABLE angajati (coda NUMBER (4) PRIMARY KEY,nume VARCHAR2(15), pren VARCH
AR2(15),orel NUMBER (3), bonus NUMBER(5,2), salar NUMBER(6));
declare
salar number;
orel number:=25;
salor number:=10;
bonus number:=200;
angj angajati%rowtype;
begin
salar:=(orel*salor)+bonus;
angj.nume:='Ion';
angj.pren:='Mirel';
DBMS_OUTPUT.PUT_LINE('Nume '||'Prenume '||'Salar');
DBMS_OUTPUT.PUT_LINE(angj.nume||' '||angj.pren||' '||salar);
end;
/
INSERT INTO angajati VALUES (100, 'POP', 'Ion', 120, 2.5, 500);
INSERT INTO angajati VALUES (101, 'LUSTREA', 'Anca', 200, 3.5, 600);
select*from angajati;
declare
bon number(8,2);
cod number:=100;
begin
select salar*0.025 into bon from angajati where coda=cod;
DBMS_OUTPUT.PUT_LINE('Bonus '||bon);
end;
/
CREATE TABLE angajati (coda NUMBER (4) PRIMARY KEY,nume VARCHAR2(15), pren VARCH
AR2(15),orel NUMBER (3), bonus NUMBER(5,2), salar NUMBER(6));
create or replace procedure a(cod number,numea varchar2,prena varchar2)is
begin
insert into angajati(coda,nume,pren) values(cod,numea,prena);
end a;
/
execute a(2,'Vasilescu','Pop');
create or replace procedure a(cod number)is

begin
delete from angajati where coda=cod;
end a;
/
execute a(2);
create table Firma_cla(codfi number(4)constraint pk_Firma_cla_codfi Primary Key
constraint nn_codfi NOT NULL constraint ck_codf check (codfi<=2000),
numef VARCHAR2 (20) CONSTRAINT ck_Firma_cla_numef CHECK (SUBSTR(numef,1,1)=UPPER
(SUBSTR(numef,1,1))),adresaf varchar2(20),localitatef varchar2(20));
create table angajati_cla(coda number(4) constraint pk_angajati_cla_coda Primary
Key constraint nn_coda not null,nume varchar2(20),prenume varchar2(20),
data_nasterii date,salarb number(6),spor varchar2(4),codfi number(4) constraint
fk_angajati_cla_codfi references Firma_cla(codfi));
insert into Firma_cla values (1,'Auchan','str.Ion','Timisoara');
insert into Firma_cla values (2,'Profi','str.Maria','Timisoara');
insert into Firma_cla values (3,'Kaufland','str.Vasile','Timisoara');
select * from FIRMA_CLA;
insert into angajati_cla values (1,'Sima','Timotei',to_date('12/03/2009','dd/mm/
yyyy'),4000,200,2);
insert into angajati_cla values (2,'Vesnic','Florin',to_date('03/06/2007','dd/mm
/yyyy'),3000,100,3);
insert into angajati_cla values (3,'Sima2','Timotei',to_date('12/03/2009','dd/mm
/yyyy'),4000,200,2);
insert into angajati_cla values (4,'Sima3','Timotei',to_date('12/03/2009','dd/mm
/yyyy'),4000,200,2);
insert into angajati_cla values (5,'Sima4','Timotei',to_date('12/03/2009','dd/mm
/yyyy'),4000,200,1);
insert into angajati_cla values (6,'Sima5','Timotei',to_date('12/03/2009','dd/mm
/yyyy'),4000,200,1);
select * from ANGAJATI_CLA;
alter table angajati_cla add moto date;
alter table angajati_cla drop column moto;
update angajati_cla set data_angajarii=sysdate where coda=1;
select nume,numef,(salarb+salarb*spor) salb from ANGAJATI_CLA,FIRMA_CLA where FI
RMA_CLA.CODFI = ANGAJATI_CLA.CODFI;
select numef,count(*)NrAngj from ANGAJATI_CLA,FIRMA_CLA where FIRMA_CLA.CODFI =
ANGAJATI_CLA.CODFI group by numef;
select numef,localitatef,sum(salarb)Suma from FIRMA_CLA,ANGAJATI_CLA where FIRMA
_CLA.CODFI = ANGAJATI_CLA.CODFI group by numef,localitatef order by suma desc;
select numef,count(coda)NrAngj from ANGAJATI_CLA,FIRMA_CLA where FIRMA_CLA.CODFI
= ANGAJATI_CLA.CODFI group by numef having count(coda)>=2;
desc LOCALIT_ALI;
CREATE TABLE localit_ali (codloc number(5) PRIMARY KEY, localitate varchar2(30),
judet varchar2(2) check (judet=UPPER(JUDET)) );
CREATE TABLE datepers_ali (nrmatr number(3) Primary key check (nrmatr<=400),nume
pren varchar2(20), datanast date, codlocalitate number(5) references localit_ali
(codloc),
sex varchar2(1) default 'F', adresa varchar2(20), codpost number(6));
CREATE SEQUENCE codloc_seq increment by 1 minvalue 100 maxvalue 1000
nocycle nocache order;
INSERT INTO localit_ali values ( codloc_seq.NEXTVAL , 'lugoj', 'TM');
INSERT INTO localit_ali values ( codloc_seq.NEXTVAL , 'Iasi', 'IS');
INSERT INTO localit_ali values ( codloc_seq.NEXTVAL , 'Timisoara', 'TM');
INSERT INTO localit_ali values ( codloc_seq.NEXTVAL , 'Timisoara', 'SM');
SELECT * from localit_ali;
INSERT INTO datepers_ali values (234, 'Popescu Vasile', to_date('08/08/1986','dd

/mm/yyyy'), 100, 'M', 'Str. Liliacului', 611111);


INSERT INTO datepers_ali (nrmatr, numepren,datanast, codlocalitate,adresa,codpos
t) values (235, 'Ionescu Monica', to_date('02/10/1986','dd/mm/yyyy'), 101, 'Str.
Eminescu', 707123);
INSERT INTO datepers_ali values (236, 'Pop Ion', to_date('20/01/1984','dd/mm/yyy
y'), 102, 'M', 'Str. Daliei', 300758);
INSERT INTO datepers_ali values (237, 'Avram Ionut', to_date('03/03/1998','dd/mm
/yyyy'), 101, 'M', 'Str. V. Parvan', 300758);
select * from datepers_ali;
alter table datepers_ali drop column sex;
alter table datepers_ali add medie number(5,2);
update datepers_ali set medieadm=10 where nrmatr=234;
select numepren,judet from DATEPERS_ALI,LOCALIT_ALI where DATEPERS_ALI.CODLOCALI
TATE=LOCALIT_ALI.CODLOC and medieadm>8 and judet='TM';
select localitate,avg(medieadm) from datepers_ali,LOCALIT_ALI where datepers_ali
.CODLOCALITATE=LOCALIT_ALI.CODLOC group by localitate;
declare
meaj number(5,2):=9.91;
cod number:=234;
num varchar2(20);
begin
select numepren into num from datepers_ali where nrmatr=cod;
DBMS_OUTPUT.PUT_LINE('Media ajust stud '||num||' este '||meaj);
end;
/
declare
me number(5,2);
begin
select avg(medieadm) into me from datepers_ali;
DBMS_OUTPUT.PUT_LINE('Media mediilor este '||me);
end;
/
create or replace procedure adaug(nrm number,num varchar2)is
begin
insert into datepers_ali(nrmatr,numepren) values(nrm,num);
end adaug;
/
execute adaug(15,'Vasila');
create or replace procedure sterg(nrm number)is
begin
delete from datepers_ali where nrmatr=nrm;
end sterg;
/
execute sterg(15);
CREATE TABLE localit_ali (codloc number(5) PRIMARY KEY, localitate varchar2(30),
judet varchar2(2) check (judet=UPPER(JUDET)) );
CREATE TABLE datepers_ali (nrmatr number(3) Primary key check (nrmatr<=400),nume
pren varchar2(20), datanast date, codlocalitate number(5) references localit_ali
(codloc),
sex varchar2(1) default 'F', adresa varchar2(20), codpost number(6));
INSERT INTO datepers_ali values (234, 'Popescu Vasile', to_date('08/08/1986','dd
/mm/yyyy'), 100, 'M', 'Str. Liliacului', 611111);
INSERT INTO datepers_ali (nrmatr, numepren,datanast, codlocalitate,adresa,codpos
t) values (235, 'Ionescu Monica', to_date('02/10/1986','dd/mm/yyyy'), 101, 'Str.

Eminescu', 707123);
INSERT INTO datepers_ali values (236, 'Pop Ion', to_date('20/01/1984','dd/mm/yyy
y'), 102, 'M', 'Str. Daliei', 300758);
INSERT INTO datepers_ali values (237, 'Avram Ionut', to_date('03/03/1998','dd/mm
/yyyy'), 101, 'M', 'Str. V. Parvan', 300758);
INSERT INTO datepers_ali values (237, 'Avram Ionut', to_date('03/03/1998','dd/mm
/yyyy'), 101, 'M', 'Str. V. Parvan', 300758);
select * from datepers_ali;
SELECT judet, round(avg(medieadm),2) FROM datepers_ali, localit_ali where codloc
alitate=codloc and judet='TM' group by judet;
select medieadm from datepers_ali where codlocalitate=101;
create or replace procedure me(cod number)is
num varchar(20);
med number(5,2);
begin
select avg(medieadm)into med from datepers_ali where codlocalitate=cod;
select localitate into num from datepers_ali,LOCALIT_ALI where codlocalitate=cod
and codloc=codlocalitate;
DBMS_OUTPUT.PUT_LINE('Studentii '||num||' au media '||med);
end me;
/
execute me(101);
select numepren,localitate from localit_ali,datepers_ali where codloc=codlocalit
ate and codlocalitate=101;
create or replace procedure detalii(cod number)is
num varchar2(20);
loc varchar2(15);
cursor lc is select numepren,localitate from localit_ali,datepers_ali where codl
oc=codlocalitate and codlocalitate=cod;
begin
open lc;
loop
fetch lc into num,loc;
exit when lc%notfound;
DBMS_OUTPUT.PUT_LINE(num||' '||loc);
end loop;
close lc;
end detalii;
/
execute detalii(103);
INSERT INTO localit_ali values ( codloc_seq.NEXTVAL , 'lugoj', 'TM');
INSERT INTO localit_ali values ( codloc_seq.NEXTVAL , 'Iasi', 'IS');
INSERT INTO localit_ali values ( codloc_seq.NEXTVAL , 'Timisoara', 'TM');
INSERT INTO localit_ali values ( codloc_seq.NEXTVAL , 'Timisoara', 'SM');
select * from localit_ali;
SELECT * from DATEPERS_ALI;
select numepren,medieadm from localit_ali,datepers_ali where codloc=codlocalitat
e and judet='IS';
create or replace procedure det(ju varchar2)is
nu varchar2(20);
me number;
cursor a is select numepren,medieadm from localit_ali,datepers_ali where codloc=
codlocalitate and judet=ju;
begin
open a;

loop
fetch a into nu,me;
exit when a%notfound;
DBMS_OUTPUT.PUT_LINE('Nume: '||nu||' Me: '||me);
end loop;
close a;
end det;
/
execute det('TM');
select judet,count(nrmatr)NrStud from localit_ali,datepers_ali where codloc=codl
ocalitate group by judet;
create or replace procedure nr is
ju varchar(10);
n number;
cursor a is select judet,count(nrmatr)from localit_ali,datepers_ali where codloc
=codlocalitate group by judet;
begin
DBMS_OUTPUT.PUT_LINE('Judet '||' Nr');
open a;
loop
fetch a into ju,n;
exit when a%notfound;
DBMS_OUTPUT.PUT_LINE(ju||'
'||n);
end loop;
close a;
end nr;
/
execute nr;
select judet,numepren,medieadm from localit_ali,datepers_ali where codloc=codloc
alitate and judet='TM';
create or replace procedure det(j varchar2)is
ju varchar2(10);
num varchar2(20);
me number;
cursor a is select judet,numepren,medieadm from localit_ali,datepers_ali where c
odloc=codlocalitate and judet=j;
begin
DBMS_OUTPUT.PUT_LINE('Judet '||'Nume '||'
Medie');
open a;
loop
fetch a into ju,num,me;
exit when a%notfound;
DBMS_OUTPUT.PUT_LINE(ju||' '||num||' '||me);
end loop;
close a;
end;
/
execute det('TM');
select judet,count(nrmatr) from datepers_ali,localit_ali where codloc=codlocalit
ate and medieadm>7 group by judet;
create or replace procedure m is
ju varchar(3);
nr number;
cursor a is select judet,count(nrmatr) from datepers_ali,localit_ali where codlo
c=codlocalitate and medieadm>8 group by judet;

begin
open a;
loop
fetch a into ju,nr;
exit when a%notfound;
DBMS_OUTPUT.PUT_LINE(ju||' '||nr);
end loop;
close a;
end;
/
execute m;
CREATE TABLE localitati (codloc number(5) PRIMARY KEY, localitate varchar2(30),
judet varchar2(2) check (judet=UPPER(JUDET)) );
CREATE TABLE datepers (nrmatr number(3) Primary key ,
numepren varchar2(20), datanast date, codlocalitate number(5) references localit
ati(codloc),
sex varchar2(1) default 'F', adresa varchar2(20), codpostal number(6));
CREATE SEQUENCE codloc_seq increment by 1 minvalue 100 maxvalue 1000
nocycle nocache order;
INSERT INTO localitati values ( codloc_seq.NEXTVAL , 'Lugoj', 'TM');
INSERT INTO localitati values ( codloc_seq.NEXTVAL , 'Iasi', 'IS');
INSERT INTO localitati values ( codloc_seq.NEXTVAL , 'Timisoara', 'TM');
SELECT * from localitati;
INSERT INTO datepersonale values (234, 'Popescu Vasile', to_date('08/08/1986','d
d/mm/yyyy'), 100, 'M', 'Str. Liliacului', 611111);
INSERT INTO datepersonale (nrmatr, numepren,datanast, codlocalitate,adresa,codpo
stal) values (235, 'Ionescu Monica', to_date('02/10/1986','dd/mm/yyyy'), 101, 'S
tr. Eminescu', 707123);
INSERT INTO datepersonale values (236, 'Pop Ion', to_date('20/01/1984','dd/mm/yy
yy'), 102, 'M', 'Str. Daliei', 300758);
INSERT INTO datepersonale values (237, 'Avram Ionut', to_date('03/03/1998','dd/m
m/yyyy'), 101, 'M', 'Str. V. Parvan', 300758);
SELECT * from datepers;
create or replace function q(nr number)return varchar2 is
nu varchar2(30);
begin
select numepren into nu from datepers where nrmatr=nr;
return nu;
end;
/
declare
a varchar(30);
begin
select adresa into a from datepers where nrmatr=235;
dbms_output.put_line('Studentul cu nrmatr 235 are numele '||q(235)||' iar adresa
'||a);
end;
/
create or replace function c(ju varchar2) return varchar2 is
num varchar(20);
g number;
cursor a is select numepren from datepers,localitati where codloc=codlocalitate
and judet=ju;
begin
DBMS_OUTPUT.PUT_LINE('Numele pers din jud '||ju||' sunt/este:');
open a;
g:=0;

loop
fetch a into num;
exit when a%notfound;
g:=g+1;
DBMS_OUTPUT.PUT_LINE(g||' '||num);
end loop;
close a;
DBMS_OUTPUT.PUT_LINE('Nr total de pers: '||g);
return ju;
end;
/
begin
DBMS_OUTPUT.PUT_LINE(c('TM'));
END;
/
select (extract(year from sysdate)-extract(year from datanast))Varsta from datep
ers where nrmatr=237;
create or replace function v(nrm number) return number is
nr number;
begin
select (extract(year from sysdate)-extract(year from datanast)) into nr from dat
epers where nrmatr=nrm;
return nr;
end;
/
declare
num varchar2(30);
n number;
begin
select numepren into num from datepers where nrmatr=237;
DBMS_OUTPUT.PUT_LINE(num||' are varsta '||v(237));
end;
/
select * from datepers;
select count(*) from datepers where sex='M';
create or replace function s(se varchar2) return number is
n number;
begin
select count(nrmatr)into n from datepers where sex=se;
return n;
end;
/
declare
x varchar2(2);
begin
DBMS_OUTPUT.put_line('Sexul F este un nr de '||s('F'));
end;
/
declare
nume datepers.numepren%type;
adres datepers.adresa%type;
med datepers.medie_admitere%type;
n varchar(20);
a varchar(30);
m number(5,2);
crt number;

su number;
cursor c is select numepren,adresa,medie_admitere from datepers where codlocalit
ate=101;
begin
select sum(medie_admitere) into su from datepers where codlocalitate=101;
DBMS_OUTPUT.PUT_LINE('Nr crt '||'Nume
'||' Adresa
'||' Medie
');
open c;
crt:=0;
fetch c into nume,adres,med;
loop
n:=nume;
a:=adres;
m:=med;
crt:=crt+1;
DBMS_OUTPUT.PUT_LINE(crt||'
'||n||' '||' '||a||' '||m);
fetch c into nume,adres,med;
exit when c%notfound;
end loop;
DBMS_OUTPUT.PUT_LINE('Suma criteriu este: '||crt||' Suma mediei este: '||su);
close c;
end;
/
select*from datepers;
create table perso(codpers NUMBER(3) CONSTRAINT pk_codpers PRIMARY KEY ,numepers
VARCHAR2(30));
create table proiecte(codpr number(2) CONSTRAINT pk_Codpr PRIMARY KEY, titlupr v
archar(30), dirpr number(3) CONSTRAINT fk_dirpr REFERENCES
perso(codpers));
insert
insert
insert
insert
select
INSERT
INSERT
INSERT
INSERT
INSERT
select

into perso values (1,'POPESCU');


into perso values (2,'IONESCU');
into perso values (3,'BLAGA');
into perso values (4,'MUNTEAN');
* from perso;
INTO PROIECTE VALUES (10,'PR 10'
INTO PROIECTE VALUES (11,'PR 11'
INTO PROIECTE VALUES (12,'PR 12'
INTO PROIECTE VALUES (13,'PR 12'
INTO PROIECTE VALUES (14,'PR 11'
* from proiecte;

,2);
,1);
,2);
,4);
,3);

select numepers DirectorP,count(codpr)NrProiecte from perso,proiecte where codpe


rs=dirpr group by numepers;
select numepers,count(codpr)NrProiecte from perso,proiecte where codpers=dirpr g
roup by numepers having count(codpr)>(select avg(count(codpr)) from proiecte gro
up by dirpr);
select titlupr from proiecte where dirpr=2;
declare
ti varchar2(30);
cursor a is select titlupr from proiecte where dirpr=2;
begin
DBMS_OUTPUT.PUT_LINE('Ionescu coordoneaza proiectele: ');
open a;
loop
fetch a into ti;

exit when a%notfound;


DBMS_OUTPUT.PUT_Line(ti);
end loop;
close a;
end;
/
create or replace procedure p is
ti varchar2(30);
cursor a is select titlupr from proiecte where dirpr=2;
begin
DBMS_OUTPUT.PUT_LINE('Ionescu coordoneaza proiectele: ');
open a;
loop
fetch a into ti;
exit when a%notfound;
DBMS_OUTPUT.PUT_Line(ti);
end loop;
close a;
end p;
/
execute p;
create or replace procedure p(num varchar2) is
ti varchar2(30);
cursor a is select titlupr from proiecte,perso where codpers=dirpr and numepers=
num;
begin
DBMS_OUTPUT.PUT_LINE(num||' coordoneaza proiectele: ');
open a;
loop
fetch a into ti;
exit when a%notfound;
DBMS_OUTPUT.PUT_Line(ti);
end loop;
close a;
end p;
/
execute p('IONESCU');
create or replace function pr(num varchar2)return varchar2 is
ti varchar2(30);
g number;
cursor a is select titlupr from proiecte,perso where codpers=dirpr and numepers=
num;
begin
DBMS_OUTPUT.PUT_LINE(num||' coordoneaza proiectele: ');
open a;
loop
fetch a into ti;
exit when a%notfound;
DBMS_OUTPUT.PUT_LINE(ti);
end loop;
close a;
return g;
end;
/
declare
a varchar2(20);
begin

DBMS_OUTPUT.PUT_LINE(pr('IONESCU'));
END;
/

Subiect 3 vechi:
create table pac(nrCI number(6) primary key,dataCI date default sysdate,numprenp
varchar2(30),datan date,loc varchar2(20),adresa varchar(20),nrtel varchar(10));
create table doct(codD number(2) primary key,numd varchar(30),spec varchar(10));
create table prog(codP number(3) primary key,datap date default sysdate,tarif nu
mber(4),codd2 number(2) references doct(codD),nrci2 number(6) references pac(nrC
I));
desc pac;
desc doct;
desc prog;
insert into pac values(244587,to_date('16-04-2012','dd-mm-yyyy'),'Ion Popescu',t
o_date('16-04-1994','dd-mm-yyyy'),'TM','Str Pastelui','0729456600');
insert into pac values(245587,to_date('16-04-2012','dd-mm-yyyy'),'Miha Stona',to
_date('16-04-1994','dd-mm-yyyy'),'TM','Str Ochilor','0729456600');
insert into pac values(246587,to_date('16-04-2012','dd-mm-yyyy'),'Leuste Florin'
,to_date('16-04-1994','dd-mm-yyyy'),'TM','Str Muntilor','0729456600');
select * from pac;
insert
insert
insert
select

into doct values(1,'Vasilescu','Chineto');


into doct values(2,'Constantinescu','Chirurgie');
into doct values(3,'Basescu','Dentara');
* from doct;

insert
insert
insert
insert
insert
insert
select

into prog values(100,to_date('16-04-2014','dd-mm-yyyy'),50,1,244587);


into prog values(101,to_date('16-04-2014','dd-mm-yyyy'),100,1,245587);
into prog values(102,to_date('16-04-2014','dd-mm-yyyy'),150,2,246587);
into prog values(103,to_date('16-05-2014','dd-mm-yyyy'),15,3,244587);
into prog values(104,to_date('16-06-2014','dd-mm-yyyy'),135,3,245587);
into prog values(105,to_date('16-05-2014','dd-mm-yyyy'),10,1,246587);
* from prog;

select numd,count(nrci2)NrPac,sum(tarif) Suma,(sum(tarif)*0.5) Com from prog,doc


t where codd=codd2 and extract(month from datap)=extract(month from sysdate) gro
up by numd;
select numd,(count(nrci2))NrPac from prog,doct where codd=codd2 group by numd ha
ving count(nrci2)=(select max(count(nrci2)) from prog group by codd2);
select numd,count(codp)NrProg from prog,doct where codd=codd2 and extract(day fr
om datap)='16'group by numd;
create or replace procedure d(dat date) is
num varchar2(20);
nr number;
nu char(16);
n char(6);
cursor a is select numd,count(codp)from prog,doct where codd=codd2 and datap=dat
group by numd;
begin
open a;
DBMS_OUTPUT.PUT_LINE('Programari in ziua de '||dat||':');
DBMS_OUTPUT.PUT_LINE('NumeD
'||'NrProg');
loop
fetch a into num,nr;

exit when a%notfound;


nu:=num;
n:=nr;
DBMS_OUTPUT.PUT_LINE(nu||n);
end loop;
close a;
end;
/
execute d(to_date('16-04-2014','dd-mm-yyyy'));
Subiect 4 vechi:
create table aut(coda number(2) primary key,num varchar2(30),loc varchar2(10));
create table cart(codc number(3) primary key,titlu varchar2(15),editura varchar2
(15),ana date default sysdate,coda1 number(2) references aut(coda));
create table achiz(nrachiz number(2) primary key,codc number(3) references cart(
codc),nrbuc number(3),pret number(4),dataa date default sysdate);
desc aut;
desc cart;
desc achiz;
insert into aut values(1,'Vasilescu','Prahovei');
insert into aut values(2,'Carlos','Maramures');
insert into aut values(3,'Ernest','Sadova');
select* from aut;
insert
);
insert
);
insert
);
insert
);
select

into cart values(100,'Despre','Edit',to_date('15-02-2010','dd-mm-yyyy'),1

insert
insert
insert
insert
insert
insert
insert
select

into achiz values(10,100,5,14,to_date('15-02-2014','dd-mm-yyyy'));


into achiz values(11,101,5,20,to_date('15-04-2014','dd-mm-yyyy'));
into achiz values(12,102,5,100,to_date('15-04-2014','dd-mm-yyyy'));
into achiz values(13,103,5,35,to_date('15-04-2014','dd-mm-yyyy'));
into achiz values(14,101,5,15,to_date('15-02-2014','dd-mm-yyyy'));
into achiz values(15,102,5,30,to_date('15-02-2014','dd-mm-yyyy'));
into achiz values(16,100,5,20,to_date('15-04-2014','dd-mm-yyyy'));
* from achiz;

into cart values(101,'Despre','Edit',to_date('16-04-2012','dd-mm-yyyy'),2


into cart values(102,'Despre','Edit',to_date('13-05-2014','dd-mm-yyyy'),1
into cart values(103,'Despre','Edit',to_date('15-06-2014','dd-mm-yyyy'),3
* from cart;

select coda,num,count(coda1)NrCarti from aut,cart where coda=coda1 group by coda


,num;
select titlu from achiz,cart where cart.CODC = achiz.CODC and extract(year from
dataa)=2014 and extract(month from dataa)=4;
select titlu,sum(nrbuc)NrVanz from cart,achiz where cart.CODC = achiz.CODC group
by titlu having sum(nrbuc)>(select avg(nrbuc) from achiz);
select titlu from cart where editura='Edit' and extract(year from ana)=2014;
select titlu,pret from achiz,cart where cart.CODC = achiz.CODC and pret>ALL(sele
ct pret from achiz where extract(month from dataa)=02);
select pret from achiz where extract(month from dataa)=02;
select titlu from cart,achiz where cart.CODC = achiz.CODC and extract(year from
dataa)=2014 and extract(month from dataa)=4 and coda1=1;

set serveroutput on;


create or replace procedure a(ca number)is
tit varchar2(30);
n varchar2(20);
cursor c is select titlu from cart,achiz where cart.CODC = achiz.CODC and extrac
t(year from dataa)=2014 and extract(month from dataa)=4 and coda1=ca;
begin
select num into n from aut where coda=ca;
DBMS_OUTPUT.PUT_LINE('Cartile achizitionate ale autorului '||n||' sunt: ');
open c;
loop
fetch c into tit;
exit when c%notfound;
DBMS_OUTPUT.PUT_LINE(tit);
end loop;
close c;
end;
/
execute A(1);
create or replace function c(cod number) return varchar2 is
tit varchar2(30);
g varchar2(20);
cursor a is select titlu from cart where codc=cod;
begin
open a;
fetch a into tit;
if a%notfound then DBMS_OUTPUT.PUT_LINE('Nu exista carte cu acest cod');
else
DBMS_OUTPUT.PUT_LINE('Titlul cartii cu codul '||cod||' este: '||tit);
end if;
close a;
return g;
end;
/
begin
DBMS_OUTPUT.PUT_LINE(c(103));
END;
/
create or replace function c(cod number) return number is
tit varchar2(30);
cursor a is select titlu from cart where codc=cod;
begin
open a;
fetch a into tit;
if a%notfound then DBMS_OUTPUT.PUT_LINE('Nu exista carte cu acest cod');
return 0;
else
return 1;
end if;
close a;
end;
/
begin
DBMS_OUTPUT.PUT_LINE(c(103));
END;
/

Subiect 3 nou:
create table agenti(nra number(2) primary key,numa varchar2(20),adresaa varchar2
(20),tela varchar2(10));
create table proprietari(nrp number(3) primary key,nump varchar2(20),adresap var
char2(20),telp varchar2(10));
create table imobile(nri number(1) primary key,loc varchar2(10),zona varchar2(20
),camere number(1),adresa varchar2(20),prets number(4),pretv number(4),datav dat
e default sysdate,
nrpi number(3)references proprietari(nrp),nrai number(2) references agenti(nra))
;
desc imobile; desc agenti; desc proprietari;
insert
insert
insert
select

into agenti values(10,'Agent 1','Adresa 1','0111');


into agenti values(11,'Agent 2','Adresa 2','0112');
into agenti values(12,'Agent 3','Adresa 3','0113');
* from agenti;

insert
insert
insert
select

into proprietari values(100,'Prorietar 1','Adresa 1','0111');


into proprietari values(101,'Prorietar 2','Adresa 2','0112');
into proprietari values(102,'Prorietar 3','Adresa 3','0113');
* from proprietari;

insert into imobile values(1,'Loc


014','dd-mm-yyyy'),100,10);
insert into imobile values(2,'Loc
014','dd-mm-yyyy'),100,11);
insert into imobile values(3,'Loc
014','dd-mm-yyyy'),100,10);
insert into imobile values(4,'Loc
014','dd-mm-yyyy'),100,12);
insert into imobile values(5,'Loc
014','dd-mm-yyyy'),100,11);
insert into imobile values(6,'Loc
14','dd-mm-yyyy'),100,10);
select * from imobile;

1','Zona 2',2,'Str 1',140,120,to_date('16-02-2


2','Zona 1',3,'Str 2',140,150,to_date('16-02-2
3','Zona 2',1,'Str 3',140,110,to_date('16-02-2
4','Zona 2',2,'Str 4',140,140,to_date('16-02-2
5','Zona 3',4,'Str 5',140,160,to_date('16-02-2
6','Zona 1',3,'Str 6',140,50,to_date('16-02-20

select zona,camere,sum(pretv) from imobile group by zona,camere;


select nra,numa,round(avg(pretv),2)MePV from imobile,agenti where nra=nrai and n
ra=10 and extract(year from datav)=extract(year from sysdate)group by nra,numa;
select max(pretv) from imobile where zona='Zona 1' group by zona;
create or replace procedure z(zo varchar2) is
p number;
begin
select max(pretv) into p from imobile where zona=zo group by zona;
DBMS_OUTPUT.PUT_LINE('Pret vanzare maxim pentru '||zo||' este: '||p);
end;
/
execute z('Zona 2');
Subiect 4 nou:
create table procese(nrpv number(1) primary key,datap date,cauza varchar2(20),pr
ocdesp number(5,2));
create table contracte(nrcon number(2) primary key,tipa varchar2(10),datacon dat
e,perasig number(3),obiecta varchar2(15),vala number(4),primal number(3));
create table chitante(nrchit number(3) primary key,datachit date,suma number(4),
nrcon2 number(2) references contracte(nrcon),nrpv2 number(1) references procese(

nrpv));
desc procese;desc contracte;desc chitante;
alter table procese modify procdesp number(5,2);
insert
insert
insert
select

into procese values(1,to_date('12-04-2014','dd-mm-yyyy'),'Cauza 1',0.5);


into procese values(2,to_date('12-04-2014','dd-mm-yyyy'),'Cauza 2',0.2);
into procese values(3,to_date('12-04-2014','dd-mm-yyyy'),'Cauza 3',0.4);
* from procese;

insert into contracte values(10,'Tip 1',to_date('12-06-2014','dd-mm-yyyy'),4,'Ob


iect 1',300,20);
insert into contracte values(11,'Tip 2',to_date('12-06-2014','dd-mm-yyyy'),3,'Ob
iect 2',400,20);
insert into contracte values(12,'Tip 3',to_date('12-06-2014','dd-mm-yyyy'),1,'Ob
iect 3',300,20);
select * from contracte;
insert
insert
insert
insert
insert
insert
select

into chitante values(100,to_date('12-06-2014','dd-mm-yyyy'),5,10,1);


into chitante values(101,to_date('12-06-2014','dd-mm-yyyy'),2,11,2);
into chitante values(102,to_date('12-06-2014','dd-mm-yyyy'),3,12,3);
into chitante values(103,to_date('12-06-2014','dd-mm-yyyy'),4,12,3);
into chitante values(104,to_date('12-06-2014','dd-mm-yyyy'),5,11,2);
into chitante values(105,to_date('12-06-2014','dd-mm-yyyy'),3,10,1);
* from chitante;

select tipa,sum(procdesp*vala) from procese,contracte,chitante where nrpv=nrpv2


and nrcon=nrcon2 and extract(month from datacon)=extract(month from sysdate) gro
up by tipa;
select nrcon,sum(vala) from contracte group by nrcon having sum(vala)=(select ma
x(sum(vala)) from contracte group by nrcon);
select sum(suma*vala) from procese,contracte,chitante where nrpv=nrpv2 and nrcon
=nrcon2 and cauza='Cauza 1' group by cauza;
create or replace function caz(c varchar2) return number is
nr number;
begin
select sum(suma*vala) into nr from procese,contracte,chitante where nrpv=nrpv2 a
nd nrcon=nrcon2 and cauza=c group by cauza;
return nr;
end;
/
declare
ca varchar2(20):='Cauza 1';
suma number;
begin
suma:=caz(ca);
DBMS_OUTPUT.PUT_LINE(ca||' are suma totala '||suma);
END;
/
Subiect 1:

create table cursanti(nrm number(1) primary key,nume varchar2(20),datan date,loc


varchar2(15),sex varchar2(1));
create table examene(codex number(2) primary key,dataex date);
create table prezentari(idprez number(3) primary key,nrprez number(1),pct number
(3) check(pct between 0 and 100),nrm1 number(1) references cursanti(nrm),codex2

references examene(codex));
desc cursanti;desc examene;desc prezentari;
insert into cursanti values(1,'Nume 1',to_date('13-05-1994','dd-mm-yyyy'),'TM','
M');
insert into cursanti values(2,'Nume 2',to_date('13-05-1994','dd-mm-yyyy'),'TM','
M');
select * from cursanti;
insert into examene values(10,to_date('20-05-2014','dd-mm-yyyy'));
insert into examene values(11,to_date('22-05-2014','dd-mm-yyyy'));
select * from examene;
insert
insert
insert
insert
insert
insert
insert
select

into prezentari values(100,1,75,1,10);


into prezentari values(101,2,100,1,10);
into prezentari values(102,1,65,1,11);
into prezentari values(103,1,50,2,10);
into prezentari values(104,1,40,2,11);
into prezentari values(105,2,43,2,11);
into prezentari values(106,3,45,2,11);
* from prezentari;

select dataex,count(nrm1)NrCursanti from prezentari,examene where codex=codex2 a


nd dataex=to_date('22-05-2014','dd-mm-yyyy') and nrprez=3 group by dataex;
select codex2,(count(nrm1))NrCursanti from prezentari group by codex2 having cou
nt(nrm1)=(select max(count(nrm1)) from prezentari group by codex2) ;
select nume,pct from prezentari,cursanti,examene where nrm=nrm1 and codex=codex2
and dataex=to_date('22-05-2014','dd-mm-yyyy')and nrprez=1;
create or replace procedure d(dat date)is
num varchar2(20);
pt number;
cursor a is select nume,pct from prezentari,cursanti,examene where nrm=nrm1 and
codex=codex2 and dataex=dat and nrprez=1;
begin
open a;
loop
fetch a into num,pt;
exit when a%notfound;
DBMS_OUTPUT.PUT_LINE('Studentul '||num||' are punctajul '||pt);
end loop;
close a;
end;
/
execute d(to_date('22-05-2014','dd-mm-yyyy'));
select pct from prezentari,cursanti where nrm=nrm1 and nume='Nume 2' and nrprez=
(select max(nrprez) from prezentari,cursanti where nrm=nrm1 and nume='Nume 2');
create or replace function s(num varchar2)return number is
p number;
begin
select pct into p from prezentari,cursanti where nrm=nrm1 and nume=num and nrpre
z=(select max(nrprez) from prezentari,cursanti where nrm=nrm1 and nume=num);
return p;
end;
/
declare
nu varchar2(20):='Nume 2';
pct number;

begin
pct:=s(nu);
DBMS_OUTPUT.PUT_LINE('Studentul '||nu||' are pctj la utlima prezentare '||pct);
END;
/
Subiect 2:
create table categorii(codcat number(2) primary key,dencat varchar2(15));
create table valuta(codval number(3) primary key,denval varchar2(10));
create table produse(codp number(2) primary key,denp varchar2(20),um varchar2(3)
check(um in('l','m','kg')),pret number(4),stoc number(4),codcat1 number(2) refe
rences categorii(codcat),
codval2 number(3) references valuta(codval));
desc categorii;desc valuta;desc produse;
insert
insert
insert
select

into categorii values(1,'Categoria 1');


into categorii values(2,'Categoria 2');
into categorii values(3,'Categoria 3');
* from categorii;

insert
insert
insert
select

into valuta values(100,'Valuta 1');


into valuta values(101,'Valuta 2');
into valuta values(102,'Valuta 3');
* from valuta;

insert
insert
insert
insert
insert
select

into produse values(10,'Produs


into produse values(20,'Produs
into produse values(11,'Produs
into produse values(12,'Produs
into produse values(13,'Produs
* from produse;

1','kg',10,5,1,100);
2','l',10,8,2,101);
3','kg',5,5,1,100);
4','m',10,5,3,102);
5','l',6,6,2,101);

select codp,pret,decode(codp,10,1.1*pret,20,pret*1.2,pret)PretAjust from produse


;
select codcat,dencat,max(pret*stoc)Valoare from produse,categorii where codcat=c
odcat1 group by codcat,dencat;
select (pret*stoc)Valoare from produse where codp=10;
set serveroutput on;
create or replace function v(cod number)return number is
val number;
begin
select (pret*stoc) into val from produse where codp=cod;
return val;
end;
/
declare
den varchar2(30);
val varchar2(20);
va number;
c number:=20;
begin
select denp into den from produse where codp=c;
select denval into val from produse,valuta where codval=codval2 and codp=c;
va:=v(c);
DBMS_OUTPUT.PUT_LINE('Produsul '||den||' in valuta '||val||' are valoarea '||va)
;

END;
/
set serveroutput on;
select denval,sum(stoc*pret)SProd from produse,valuta where codval=codval2 group
by denval;
create or replace procedure valut is
val number;
den varchar2(20);
cursor a is select denval,sum(stoc*pret) from produse,valuta where codval=codval
2 group by denval;
begin
open a;
loop
fetch a into den,val;
exit when a%notfound;
DBMS_OUTPUT.PUT_LINE(den||' '||val);
end loop;
close a;
end;
/
execute valut;

Вам также может понравиться