0% au considerat acest document util (0 voturi)
20 vizualizări6 pagini

S2

Seminar 2 ex SGBD

Încărcat de

irinaato77
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
20 vizualizări6 pagini

S2

Seminar 2 ex SGBD

Încărcat de

irinaato77
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd

set SERVEROUTPUT on;

--[Link]ți numele și prenumele angajatului cu id-ul 100.

declare

v_nume [Link]%type;

v_prenume [Link]%type;

begin

select nume, prenume into v_nume,v_prenume from angajati where id_angajat=100;

dbms_output.put_line('Angajatul se numeste '|| v_nume||' '||v_prenume);

end;

--EX.2 Afisați numele, salariul și data angajării pentru un angajat al cărui nume se

--citește de la tastatura

declare

v_name varchar2(20);

v_salariul number not null:=0;

v_data date;

v_id number not null:=&id;

begin

select nume, salariul, data_angajare into v_name, v_salariul,v_data from angajati

where id_angajat=v_id;

dbms_output.put_line('Angajatul cu id ul '||v_id||' se numeste '||v_name||' are salariul '||


v_salariul||' si a fost angajat '||v_data);

end;

/
--varianta cu TYPE

declare

v_nume [Link]%type;

v_sal [Link]%type;

v_id angajati.id_angajat%type:=&id;

begin

select nume, salariul into v_nume, v_sal from angajati

where id_angajat=v_id;

dbms_output.put_line('Angajatul '||v_nume||' are salariul '||v_sal);

end;

--EX.3 creez o tabela dupa forma produse, dar care are DOAR structura ei (de aceea avem
instructiunea mereu falsa 1=2_

--* INSEAMNA CA VREAU TOATE COLOANELE

--execute immediate, intr-un bloc pl/sql nu sunt acceptate LDD

--begin

-- execute immediate 'create table prod as select * from produse where 1=2';

-- execute immediate 'drop table prod';

--end;

--EX.4

--Să se mărească cu 100 salariul unui angajat al cărui id este citit de la

--tastatura (am adugat de la mine si afisarea)

declare

v_id angajati.id_angajat%type:=&id;

v_sal [Link]%type;
begin

update angajati

set salariul=salariul+100

where id_angajat=v_id;

select salariul into v_sal from angajati where id_angajat=v_id;

dbms_output.put_line('Angajatul cu id '||v_id||' are acum salariul '|| v_sal);

end;

--În PL/SQL, variabilele declarate într-un bloc interior NU sunt vizibile în blocurile exterioare!!

--EX.5 !!!!!

--Sa se afiseze numele, venitul total si vechimea angajatului citit de la

--tastatura.

--explicatii:

--Dar dacă pui:NVL(comision, 0)

--→ înseamnă: dacă comision e NULL, folosește 0 în locul lui.

--Cum funcționează:

--MONTHS_BETWEEN(SYSDATE, data_angajare) → calculează numărul de luni între azi


(SYSDATE) și ziua în care angajatul a fost angajat.

--

--Apoi împărțim la 12 → transformăm lunile în ani.

--

--TRUNC(...) → păstrăm doar partea întreagă (eliminăm zecimalele).


declare

v_nume varchar2(30);

v_venit number not null:=0;

v_vechime number not null:=0;

v_id angajati.id_angajat%type:=&id;

begin

select nume, salariul+NVL(comision,0),TRUNC(MONTHS_BETWEEN(SYSDATE,data_angajare)/


12)

into v_nume, v_venit, v_vechime from angajati

where id_angajat=v_id;

dbms_output.put_line('Angajatul '||v_nume||' are venitul total '||v_venit||' si o vechime

in ani de '||v_vechime||' ani.');

end;

--EX 6

--. Sa se mareasca salariul angajatului citit de la tastatura

--– se preiau info despre angajatul respectiv

--– se mareste salariul cu 100 intr-o variabila

--– se modifica salariul angajatului

declare

v_nume [Link]%type;

v_salariul [Link]%type;

v_id angajati.id_angajat%type:=&id;

begin

update angajati
set salariul=salariul+100 where id_angajat=v_id;

select nume, salariul into v_nume, v_salariul from angajati

where id_angajat=v_id;

dbms_output.put_line('Angajatul se numeste '||v_nume||' are salariul '||v_salariul);

end;

--tipul RECORD

--Utilizând un tip de dată înregistrare definit de utilizator, să se afișeze preţul

--minim al produsului cu codul 3133.

DECLARE

TYPE tip_produse is record

(v_cod produse.id_produs%type, v_den produse.denumire_produs%type, v_pret_min


produse.pret_min%type);

vrec_prod tip_produse;

begin

select id_produs, denumire_produs,pret_min into vrec_prod from produse

where id_produs=3133;

dbms_output.put_line('Produsul '||vrec_prod.v_den||' are pretul '||vrec_prod.v_pret_min);

end;

S-ar putea să vă placă și