Sunteți pe pagina 1din 4

PROCEDURI STOCATE

EXEMPLE

1
Tabelele utilizate pentru exemple:

2
Exemplu cu variabile de memorie
Cerinţă:
In tabelul Angajati există pentru fiecare salariat DataAngajare şi DataPlecare în/din firma. Realizaţi o
procedură stocată cu parametru pentru a vizualiza pentru o anumită persoană (CNP-ul transmis ca parametru),
care au fost angajaţii care au lucrat în firmă în perioada cu respectivul angajat.

CREATE PROC EXEMPLU1 Se memorează


@cnp AS CHAR(13) data angajării şi data plecării
AS angajatului in 2 variabile
DECLARE @Data1 AS datetime
DECLARE @Data2 AS datetime
set @Data1= (select DataAngajare From Angajati WHERE CNP=@cnp)
set @Data2= (select DataPlecare From Angajati WHERE CNP=@cnp)

SELECT NUME, DataAngajare, DataPlecare


FROM ANGAJATI Salariatii veniti in intervalul in
WHERE DataAngajare BETWEEN @Data1 AND @Data2 care a lucrat angajatul
or DataPlecare BETWEEN @Data1 AND @Data2 Salariatii plecati in intervalul
or @Data1 between DataAngajare and DataPlecare in care a lucrat angajatul

Salariatii veniti inaintea


angajatului si plecati dupa
3
plecarea acestuia
Exemplu de utilizare a mai multor instrucţiuni SELECT in clauza FROM
Cerinţă:
1. Calculaţi total prime pe luna curentă pe fiecare CNP (pe baza tabelului Prime)
2. Utilizând ca sursă comanda interogarea precedenta si tabelul Angajati calculati venitul fiecarui
angajat pe luna curenta (salariu + total prime luna curenta).
3. Utilizand ca sursa interogarea rezultata la punctul precedent, clasificati angajatii dupa venitul lunii
curente (descrescator), utilizând funcţia RANK.

SELECT Nume, VenitLunaCurenta, RANK() OVER (ORDER BY VenitLunaCurenta desc)


as ClasificareVenit Se utilizează funcţia ISNULL pentru înlocui cu zero
FROM suma primelor în cazul angajatilor care nu au prime
(
SELECT NUME, Salariu, TotalPrime, Salariu+Isnull(TotalPrime,0) AS VenitLunaCurenta
FROM Angajati
LEFT JOIN
(
SELECT CNP, SUM(SumaPrima) AS TotalPrime
FROM PRIME
WHERE Year(DataPrima)= YEAR(Getdate()) AND MONTH(DataPrima)=MONTH(getdate())
GROUP BY CNP
) AS Interogare1 Este necesar ca
ON Angajati.CNP=Interogare1.CNP subinterogarile din clauza FROM
) AS Interogare2 să fie plasate intre paranteze
si denumite cu AS
4

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