proceduri stocate exemple

4
PROCEDURI STOCATE EXEMPLE 1

Upload: cosmina-b

Post on 15-Jun-2015

1.319 views

Category:

Documents


0 download

DESCRIPTION

BAZE DE DATE AVANSATE - SQL SERVER 2008

TRANSCRIPT

Page 1: Proceduri stocate exemple

PROCEDURI STOCATE

EXEMPLE

1

Page 2: Proceduri stocate exemple

Tabelele utilizate pentru exemple:

2

Page 3: Proceduri stocate exemple

Exemplu cu variabile de memorieCerinţă: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@cnp AS CHAR(13)ASDECLARE @Data1 AS datetimeDECLARE @Data2 AS datetime set @Data1= (select DataAngajare From Angajati WHERE CNP=@cnp)set @Data2= (select DataPlecare From Angajati WHERE CNP=@cnp)

SELECT NUME, DataAngajare, DataPlecareFROM ANGAJATIWHERE DataAngajare BETWEEN @Data1 AND @Data2 or DataPlecare BETWEEN @Data1 AND @Data2

or @Data1 between DataAngajare and DataPlecare

Se memoreazădata angajării şi data plecării angajatului in 2 variabile

Salariatii veniti in intervalul in care a lucrat angajatul

Salariatii plecati in intervalul in care a lucrat angajatul

Salariatii veniti inaintea angajatului si plecati dupa

plecarea acestuia3

Page 4: Proceduri stocate exemple

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

) AS Interogare2

SELECT NUME, Salariu, TotalPrime, Salariu+Isnull(TotalPrime,0) AS VenitLunaCurentaFROM Angajati LEFT JOIN (

) AS Interogare1ON Angajati.CNP=Interogare1.CNP

Exemplu de utilizare a mai multor instrucţiuni SELECT in clauza FROMCerinţă: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 CNP, SUM(SumaPrima) AS TotalPrimeFROM PRIMEWHERE Year(DataPrima)= YEAR(Getdate()) AND MONTH(DataPrima)=MONTH(getdate()) GROUP BY CNP

Este necesar ca subinterogarile din clauza FROM

să fie plasate intre paranteze si denumite cu AS

Se utilizează funcţia ISNULL pentru înlocui cu zero suma primelor în cazul angajatilor care nu au prime

4