Sử dụng cấu trúc điều khiển trong thủ tục 1.S ử dụng cấu trúc If…Else…

Một phần của tài liệu Giáo trình quản trị SQL server phần 2 cđ cơ điện hà nội (Trang 52 - 55)

Cấu trúc If…Else… xét điều kiện để quyết định những lệnh T-SQL nào sẽ được thực hiện

86 If Biểu_thức_điều_kiện

Khối_lệnh [ Else Khối_lệnh ]

Khối lệnh là một hoặc nhiều lệnh nằm trong cặp từ khóa Begin...End

Ví dụ:

Cho 2 mã SV bất kỳ, kiểm tra xem 2 SV đó có cùng ngày sinh hay không? Create Proc SP_SVCungNgaySinh

(@MaSV1 nvarchar(10), @MaSV2 nvarchar(10)) As

Begin

declare @NS1 smalldatetime Select @MaKhoa1 = MaKhoa

From SinhVien sv inner join Lop l on sv.MaLop = l.MaLop Where MaSV = @MaSV1

declare @NS2 smalldatetime Select @MaKhoa2 = MaKhoa

From SinhVien sv inner join Lop l on sv.MaLop = l.MaLop Where MaSV = @MaSV2

If @NS1 = @NS2

print N'2 SV có cùng ngày sinh' Else

print N'2 SV khác ngày sinh với nhau' End

Exec SP_SVCungNgaySinh 'SV0101','SV0102'

4.2. Sử dụng cấu trúc While

87

Cú pháp:

While Biểu_thức_điều_kiện [Begin] Khối_lệnh [Break] [Continue] [End] Trong đó:

 Break: thoát khỏi vòng while hiện hành

 Continue: trở lại đầu vòng while, bỏ qua các lệnh sau đó

Ví dụ:

Xét lược đồ quan hệ: SV(MaSV: int, HoTen: nvarchar(40))

Viết lệnh xác định 1 mã SV mới theo quy định: Mã SV tăng dần, nếu có chỗ trống thì mã mới sẽ chèn vào chỗ trống đó. Chẳng hạn nếu trong bảng SV đã có các mã SV 1,2,3,6 thì mã SV mới là 4

Declare @STT int Set @STT = 1

While exists(select * from SV where MaSV = @STT) set @STT = @STT+1

Insert into SV(MaSV, HoTen) values(@STT, N 'Nguyễn Văn Nam')

4.3. Sử dụng cấu trúc Case

Kiểm tra một dãy các điều kiện và trả về kết quả phù hợp với điều kiện đúng. Lệnh Case được sử dụng như một hàm trong câu lệnh Select

Cú pháp:

Dng 1 (simple case):

Case Biểu_thức_đầu_vào When Giá_trị then Kết_quả

88 [...n] [ Else Kết_quả_khác] End Dạng 2 (searched case): Case

When Biểu_thức_đk then Kết_quả [...n] [ Else Kết_quả_khác] End Ví dụ: Xét lược đồ quan hệ: NhanVien(MaNV: int, HoTen: nvarchar(40), GioiTinh: nvarchar(3), NgaySinh: datetime, CapBac: smallint )

Cho biết những nhân viên đến tuổi nghỉ hưu biết rằng tuổi về hưu của nam là 60, của nữ là 55

select *

from NhanVien

where year(getdate()) – year(NgaySinh) > = Case GioiTinh when ‘Nam’ then 60 when ‘Nu’ then 55 End

Một phần của tài liệu Giáo trình quản trị SQL server phần 2 cđ cơ điện hà nội (Trang 52 - 55)

Tải bản đầy đủ (PDF)

(56 trang)