WHILE (T-SQL)
Thiết lập 1 điu kin cho s lp li ca vic thi hành 1 câu lnh SQL hay mt khi lnh. Các câu
lệnh được chy trong vòng lp nhiu ln, miễn là điều kiện đã cho luôn tha. Vic thc hin các
câu lnh trong vòng lp WHILE, có th được điu khin t bên trong vòng lp vi t khóa
BREAK và CONTINUE.
Cú pháp :
WHILE Biu_thc_Boolean
{ câu_lnh_SQL | khi_lnh | BREAK | CONTINUE }
Các tham s :
- Biu_thc_Boolean : là biu thc tr v giá tr TRUE hay FALSE. Nếu biu thc có cha
mt lnh SELECT thì câu lnh SELECT phải được đóng ngoặc.
Ví d :
WHILE (SELECT COUNT(Manv) FROM NhanVien) < 50
- câu_lnh_SQL | khi_lnh : Là bt k câu lnh T-SQL đơn nào, hay các câu lệnh được
nhóm li thành mt khi lnh. Để định nghĩa 1 khối lnh, ta s dng các t khóa điu
khin BEGIN và END.
Ví d :
WHILE
BEGIN
UPDATE NhanVien
SET Luong = Luong * 1.05
SELECT Manv,Luong FROM NhanVien
END
- T khóa BREAK : thoát khi vòng lp WHILE trong cùng nht. Các câu lnh nm sau t
khóa END kết thúc ca vòng lp s thc thi bình thường.
- T khóa CONTINUE : Làm cho vòng lp WHILE bắt đầu mt vòng lp mi, vòng lp cũ
b kết thúc nên các câu lnh sau t khóa CONTINUE s b b qua.
S dng vòng lp WHILE vi BREAK và CONTINUE :
Nếu tng giá ca các sn phm nh hơn 1000, ta tăng giá mi sn phm thêm 5%. Nếu
sau khi tăng giá, tổng giá ít hơn hay bng 1250 t ta lp li việc tăng giá. Việc tăng giá
kết thúc khi ta có tổng giá cao hơn 1250.
WHILE (SELECT SUM(GiaSanPham) FROM SanPham) < 1000
BEGIN
UPDATE SanPham
SET GiaSanPham = GiaSanPham * 1.05
IF (SELECT SUM(GiaSanPham) FROM SanPham) > 1250
BREAK
ELSE
CONTINUE
END
CASE (T-SQL)
Đánh g theo mt danh sách các điu kin và tr v mt trong nhiu biu thc kết qu đã
cho.
CASE có th được s dng bt câu lnh hay mệnh đề cha biu thc nào. C th, ta
có th s dng CASE trong các câu lnh SELECT, UPDATE, DELETE và SET. Còn các
mệnh đề h tr CASE nIN, WHERE, ORDER BY và HAVING.
Biu thc CASE có 2 dng : dạng bản và dng tìm kiếm.
+ Dạng cơ bản : so sánh 1 biu thc vi mt tp các biu thức đơn giản để chn ra kết
qu.
+ Dng tìm kiếm : đánh giá mt tp các biu thức Boolean để chn ra kết qu.
Cú pháp :
+ Dạng cơ bản :
CASE biu_thc_so_sánh
WHEN biu_thức_điều_kin_1 THEN biu_thc_kết_qu_1
WHEN biu_thức_điều_kin_2 THEN biu_thc_kết_qu_2
WHEN biu_thức_điều_kin_3 THEN biu_thc_kết_qu_3 [ ...n ]
[ ELSE biu_thc_kết_qu_else ]
END
+ Dng tìm kiếm
CASE
WHEN biu_thức_Boolean_điều_kin_1 THEN biu_thc_kết_qu_1
WHEN biu_thức_Boolean _điu_kin_2 THEN biu_thc_kết_qu_2
WHEN biu_thức_Boolean _điu_kin_3 THEN biu_thc_kết_qu_3 [ ...n ]