Structuri Control Transact SQL
Structuri Control Transact SQL
1
Structuri alternative
IF expresie_logica
Bloc_insctructiuni_SQL_1
[ELSE
Bloc_instructiuni_SQL_2]
Bloc_instructiuni
BEGIN
instructiune_1
instructiune_2
….
END
2
Structuri repetitive
WHILE expresie_logica
Bloc_insctructiuni_SQL_1 -repeta un bloc de instructiuni atata
timp cat expresie_logica este TRUE
[BREAK]
-daca expresie_logica contine un SELECT,
Bloc_instructiuni_SQL_2 acesta se va scrie intre paranteze rotunde
[CONTINUE]
Bloc_instructiuni_SQL_3
Bloc_instructiuni
BEGIN
instructiune_1
instructiune_2
….
END
3
Structuri repetitive. Exemplu
Se majoreaza succesiv (la fiecare iteratie) cu cate 10 % fiecare pret de catalog de la produsele al caror pret de
catalog nu a depasit inca media generala a pretului de facturare. Majorarea se opreste in momentul in care media
preturilor de catalog depaseste media preturilor de facturare.
In cazul in care media preturilor de catalog este sub 15 lei, se majoreaza succesiv (la fiecare iteratie) cu cate 10 %
fiecare pret de catalog (de la toate produsele), pana cand cel mai mare pret de catalog obtinut depaseste 20 lei. In
acest moment (BREAK) se iese din structura repetitiva.
Nota. La fiecare iteratie se va afisa pretul de catalog cel mai mare (SELECT MAX(PretCatalog) FROM Produs).
Daca se incearca executia structurii si media preturilor de catalog depaseste 15 se va afisa doar 5
Command(s) completed successfully.
Structuri repetitive. Exemplu WHILE inclus
intr-o procedura stocata
CREATE PROCEDURE ModificaPretCatalog
@pCodProdus as bigint
AS
WHILE (SELECT PretCatalog FROM Produs WHERE CodProdus=@pCodProdus)<=
(SELECT AVG(PretFacturare)
FROM ProduseFacturate WHERE CodProdus=@pCodProdus)
BEGIN
UPDATE Produs SET PretCatalog = PretCatalog *1.1
END
Procedura stocata va realiza cresterea succesiva cu cate 10% a pretului de catalog a unui produs precizat printr-un
parametru (@pCodProdus ) pana cand pretul de catalog va depasi media preturilor de facturare ale acestuia.
Nota. Procedura stocata se va executa cu comada (20 este Codul produsului al carui
pret de catalog se va majora:
EXECUTE ModificaPretCatalog 20
6
WAITFOR
WAITFOR DELAY ‘timp_asteptare’ | TIME ‘ora_executie’
Stabileste un timp de intarziere (timp_asteptare) pana la momentul lansarii in executie a unei fraze SQL sau
stabileste ora (ora_executie) la care se va lansa in executie o fraza SQL.