1- Cerinta I: Tabele/diagrame
2 – Cerinta II: Triggers
3 – Cerinta III : Views
4 – Cerinta IV: Functii (scalar sau tabel)
5 – Cerinta V : Proceduri stocate/Cursor
CERINTA I.
Se dau următoarele tabele dintr-o bază de date pentru evidenţa clienţilor,
contractelor şi încasărilor la o firmă.
Se cunoaşte că, pentru fiecare contract, se pot întocmi unul sau mai multe
rapoarte privind situaţia lucrărilor în care se precizează: NrRaport, DataRaport,
Observatii privind stadiul lucrărilor şi suma solicitată.
Cerinţă: Adăugati tabelul/tabelele necesare şi modificaţi Diagrama de relaţii.
Restricţie: DataRaport trebuie să fie după 1 ianuarie 2008.
REZOLVARE – CERINTA 1
CERINTA II.
REZOLVARE
REZOLVARE
CREATE FUNCTION Cerinta4(@datac as datetime, @Valoare as money)
RETURNS MONEY
AS
BEGIN
RETURN
CASE
WHEN YEAR(@DATAC)= 2007 AND @VALOARE >=60000 THEN 1
WHEN YEAR(@DATAC)= 2007 AND @VALOARE <60000 THEN 2
ELSE 3
END
END
Exemplu de utilizare:
SELECT NrContract, DataContract, Valoare, dbo.Cerinta4(DataContract, Valoare)
FROM CONTRACTE
Cerinta IV.
Realizaţi o funcţie de tip scalar care va calcula pe fiecare contract un
coeficient de importanţa în funcţie de valoarea contractului şi de anul in
care a fost incheiat contractul
- pentru contractele din anul 2007 cu valoare peste 60.000 coeficient 1
- pentru contractele din anul 2007 cu valoare sub 60.000 coeficient 2
- pentru contractele de dinainte de 2007 coeficient 3
REZOLVARE
CREATE FUNCTION Cerinta4(@datac as datetime, @Valoare as money)
RETURNS MONEY
AS
BEGIN
RETURN
CASE
WHEN YEAR(@DATAC)= 2007 AND @VALOARE >=60000 THEN 1
WHEN YEAR(@DATAC)= 2007 AND @VALOARE <60000 THEN 2
ELSE 3
END
END
Exemplu de utilizare:
SELECT NrContract, DataContract, Valoare, dbo.Cerinta4(DataContract, Valoare)
FROM CONTRACTE
Cerinta IV (exemplul 2).
Realizaţi o funcţie de tip tabelar care sa returneze numerele de contracte şi
numele clientilor pentru contractele dintr-un anumit an (Anul va fi specifact ca
argument al functiei)
REZOLVARE
RETURN
END
Exemplu de utilizare:
SELECT * FROM ListaPeAn(2006)
Cerinta V. (exemplul 2)
Realizaţi o procedura stocată cu parametri pentru a realiza un clasament al
clientilor in functie de valoarea totala a contractelor. Se vor utiliza functiile
RANK sau ROW_NUMBER. Procedura va fi parametrizata pentru nu a afisa
decat clientii a caror valoare totala a contractelor depaseste o suma
specificata prin parametru.
REZOLVARE
Exemplu de utilizare:
EXEC Clasament 6000