Oracle examples

  • Upload
    andrei

  • View
    2

  • Download
    0

Embed Size (px)

DESCRIPTION

different sql commands in oracle

Citation preview

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 kALL(select 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)istit varchar2(30);n varchar2(20);cursor c is select titlu from cart,achiz where cart.CODC = achiz.CODC and extract(year from dataa)=2014 and extract(month from dataa)=4 and coda1=ca;beginselect num into n from aut where coda=ca; DBMS_OUTPUT.PUT_LINE('Cartile achizitionate ale autorului '||n||' sunt: ');open c;loopfetch 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 istit varchar2(30);g varchar2(20);cursor a is select titlu from cart where codc=cod;beginopen a;fetch a into tit;if a%notfound then DBMS_OUTPUT.PUT_LINE('Nu exista carte cu acest cod');elseDBMS_OUTPUT.PUT_LINE('Titlul cartii cu codul '||cod||' este: '||tit);end if;close a;return g;end;/beginDBMS_OUTPUT.PUT_LINE(c(103));END;/create or replace function c(cod number) return number istit varchar2(30);cursor a is select titlu from cart where codc=cod;beginopen a;fetch a into tit;if a%notfound then DBMS_OUTPUT.PUT_LINE('Nu exista carte cu acest cod');return 0;elsereturn 1;end if;close a;end;/beginDBMS_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 varchar2(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 date default sysdate,nrpi number(3)references proprietari(nrp),nrai number(2) references agenti(nra));desc imobile; desc agenti; desc proprietari;insert into agenti values(10,'Agent 1','Adresa 1','0111');insert into agenti values(11,'Agent 2','Adresa 2','0112');insert into agenti values(12,'Agent 3','Adresa 3','0113');select * from agenti;insert into proprietari values(100,'Prorietar 1','Adresa 1','0111');insert into proprietari values(101,'Prorietar 2','Adresa 2','0112');insert into proprietari values(102,'Prorietar 3','Adresa 3','0113');select * from proprietari;insert into imobile values(1,'Loc 1','Zona 2',2,'Str 1',140,120,to_date('16-02-2014','dd-mm-yyyy'),100,10);insert into imobile values(2,'Loc 2','Zona 1',3,'Str 2',140,150,to_date('16-02-2014','dd-mm-yyyy'),100,11);insert into imobile values(3,'Loc 3','Zona 2',1,'Str 3',140,110,to_date('16-02-2014','dd-mm-yyyy'),100,10);insert into imobile values(4,'Loc 4','Zona 2',2,'Str 4',140,140,to_date('16-02-2014','dd-mm-yyyy'),100,12);insert into imobile values(5,'Loc 5','Zona 3',4,'Str 5',140,160,to_date('16-02-2014','dd-mm-yyyy'),100,11);insert into imobile values(6,'Loc 6','Zona 1',3,'Str 6',140,50,to_date('16-02-2014','dd-mm-yyyy'),100,10);select * from imobile;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 nra=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) isp number;beginselect 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),procdesp number(5,2));create table contracte(nrcon number(2) primary key,tipa varchar2(10),datacon date,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 into procese values(1,to_date('12-04-2014','dd-mm-yyyy'),'Cauza 1',0.5);insert into procese values(2,to_date('12-04-2014','dd-mm-yyyy'),'Cauza 2',0.2);insert into procese values(3,to_date('12-04-2014','dd-mm-yyyy'),'Cauza 3',0.4);select * from procese;insert into contracte values(10,'Tip 1',to_date('12-06-2014','dd-mm-yyyy'),4,'Obiect 1',300,20);insert into contracte values(11,'Tip 2',to_date('12-06-2014','dd-mm-yyyy'),3,'Obiect 2',400,20);insert into contracte values(12,'Tip 3',to_date('12-06-2014','dd-mm-yyyy'),1,'Obiect 3',300,20);select * from contracte;insert into chitante values(100,to_date('12-06-2014','dd-mm-yyyy'),5,10,1);insert into chitante values(101,to_date('12-06-2014','dd-mm-yyyy'),2,11,2);insert into chitante values(102,to_date('12-06-2014','dd-mm-yyyy'),3,12,3);insert into chitante values(103,to_date('12-06-2014','dd-mm-yyyy'),4,12,3);insert into chitante values(104,to_date('12-06-2014','dd-mm-yyyy'),5,11,2);insert into chitante values(105,to_date('12-06-2014','dd-mm-yyyy'),3,10,1);select * 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) group by tipa;select nrcon,sum(vala) from contracte group by nrcon having sum(vala)=(select max(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 isnr number;beginselect sum(suma*vala) into nr from procese,contracte,chitante where nrpv=nrpv2 and nrcon=nrcon2 and cauza=c group by cauza;return nr;end;/declareca varchar2(20):='Cauza 1';suma number;beginsuma:=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 into prezentari values(100,1,75,1,10);insert into prezentari values(101,2,100,1,10);insert into prezentari values(102,1,65,1,11);insert into prezentari values(103,1,50,2,10);insert into prezentari values(104,1,40,2,11);insert into prezentari values(105,2,43,2,11);insert into prezentari values(106,3,45,2,11);select * from prezentari;select dataex,count(nrm1)NrCursanti from prezentari,examene where codex=codex2 and 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 count(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)isnum 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;beginopen a;loopfetch 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 isp number;beginselect pct into p from prezentari,cursanti where nrm=nrm1 and nume=num and nrprez=(select max(nrprez) from prezentari,cursanti where nrm=nrm1 and nume=num);return p;end;/declarenu varchar2(20):='Nume 2';pct number;beginpct:=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) references categorii(codcat),codval2 number(3) references valuta(codval));desc categorii;desc valuta;desc produse;insert into categorii values(1,'Categoria 1');insert into categorii values(2,'Categoria 2');insert into categorii values(3,'Categoria 3');select * from categorii;insert into valuta values(100,'Valuta 1');insert into valuta values(101,'Valuta 2');insert into valuta values(102,'Valuta 3');select * from valuta;insert into produse values(10,'Produs 1','kg',10,5,1,100);insert into produse values(20,'Produs 2','l',10,8,2,101);insert into produse values(11,'Produs 3','kg',5,5,1,100);insert into produse values(12,'Produs 4','m',10,5,3,102);insert into produse values(13,'Produs 5','l',6,6,2,101);select * from produse;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=codcat1 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 isval number;beginselect (pret*stoc) into val from produse where codp=cod;return val;end;/declareden varchar2(30);val varchar2(20);va number;c number:=20;beginselect 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 isval number;den varchar2(20);cursor a is select denval,sum(stoc*pret) from produse,valuta where codval=codval2 group by denval;beginopen a;loopfetch a into den,val;exit when a%notfound;DBMS_OUTPUT.PUT_LINE(den||' '||val);end loop;close a;end;/execute valut;