structuri control transact sql

7
Structuri de control al fluxului 1

Upload: cosmina-b

Post on 15-Jun-2015

136 views

Category:

Documents


1 download

DESCRIPTION

BAZE DE DATE AVANSATE - SQL SERVER 2008

TRANSCRIPT

Page 1: Structuri Control Transact SQL

Structuri de control al fluxului

1

Page 2: Structuri Control Transact SQL

IF expresie_logicaBloc_insctructiuni_SQL_1

[ELSEBloc_instructiuni_SQL_2]

Bloc_instructiuniBEGIN

instructiune_1instructiune_2….

END

Structuri alternative

2

Page 3: Structuri Control Transact SQL

Structuri repetitiveWHILE expresie_logica

Bloc_insctructiuni_SQL_1[BREAK]

Bloc_instructiuni_SQL_2[CONTINUE]

Bloc_instructiuni_SQL_3

Bloc_instructiuniBEGIN

instructiune_1instructiune_2….

END

-repeta un bloc de instructiuni atatatimp cat expresie_logica este TRUE-daca expresie_logica contine un SELECT, acesta se va scrie intre paranteze rotunde

BREAK – se realizeaza iesirea fortata din WHILECONTINUE – abandoneaza iteratia curenta, toate instructiunile de dupa CONTINUE fiind ignorate

3

Page 4: Structuri Control Transact SQL

Structuri repetitive. Exemplu

WHILE (SELECT AVG(PretCatalog) FROM Produs)<=(SELECT AVG(PretFacturare) FROM ProduseFacturate)

BEGINUPDATE Produs SET PretCatalog = PretCatalog *1.1

WHERE PretCatalog <(SELECT AVG(PretFacturare) FROM ProduseFacturate)

SELECT AVG(PretCatalog) as MediePretCatalog FROM Produs SELECT AVG(PretFacturare) As MediePretFacturare FROM ProduseFacturate

END

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.

Nota. La fiecare iteratie se va afisa media preturilor de catalog (SELECT AVG(PretCatalog) as MediePretCatalog FROM Produs ) si media preturilor de facturare (SELECT AVG(PretFacturare) As MediePretFacturare FROM ProduseFacturate). Daca se incearca executia structurii si media preturilor de catalog depaseste media preturilor de facturare va afisa doar Command(s) completed successfully. 4

Page 5: Structuri Control Transact SQL

Structuri repetitive. Exemplu

WHILE (SELECT AVG(PretCatalog) FROM Produs) <15BEGIN

UPDATE ProdusSET PretCatalog = PretCatalog * 1.1

SELECT MAX(PretCatalog) FROM Produs

IF (SELECT MAX(PretCatalog) FROM Produs)>20BREAK

ELSECONTINUE

END

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

Command(s) completed successfully.

5

Page 6: Structuri Control Transact SQL

Structuri repetitive. Exemplu WHILE inclus intr-o procedura stocata

CREATE PROCEDURE ModificaPretCatalog@pCodProdus as bigint

ASWHILE (SELECT PretCatalog FROM Produs WHERE CodProdus=@pCodProdus)<=

(SELECT AVG(PretFacturare) FROM ProduseFacturate WHERE CodProdus=@pCodProdus)

BEGINUPDATE 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.

EXECUTE ModificaPretCatalog 20

Nota. Procedura stocata se va executa cu comada (20 este Codul produsului al caruipret de catalog se va majora:

6

Page 7: Structuri Control Transact SQL

WAITFORWAITFOR 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.

WAITFOR DELAY '00:01'SELECT * FROM Produs

WAITFOR TIME '22:48'EXECUTE ModificaPretCatalog 44

Fraza SQL se va executa pe un minut

Fraza SQL se va executa la ora 22:48

7