I fr =10 Then Nếu bán kính tới 10 thì dừng
5.3. Phát biểu chọn theo nhiều chọn lựa
A. Dạng 1:
Xem cú pháp sau: <Biến nhận Kq>:= CASE <Giá trị ĐK>
When <Biểu thức ĐK 1> Then Kq1
When <Biểu thức ĐK 2> Then Kq2
When <Biểu thức ĐK 3> Then Kq3 …
Else Kq khác
END;
Xem các ví dụ case:
Ví dụ 1: Cho giá trị n nhận 1,2 hay 3
Case n
When 1 Then ‘One’
When 2 Then ‘Two’
When 3 Then ‘Three’
Else ‘Other’
End;
Xem lại cú pháp If:
if n = 1 Then ‘One’;
Elsif n = 2 Then ‘Two’;
Elsif n = 3 Then ‘Three’;
Else ‘Other’;
End If;
Nhận kết quả của CASE KETQUA := Case n
When 1 Then ‘one’
When 2 Then ‘two’
When 3 Then ‘three’
Else ‘other ‘
End;
Xem lại cú pháp If:
if n = 1 Then KETQUA := ‘one’;
Elsif n = 2 Then KETQUA := ‘two’;
Elsif n = 3 Then KETQUA := ‘three’;
Else KETQUA := ‘other’;
End If;
Ví dụ 2: Xét phái (Nam hoặc Nữ)
DECLARE
PHAI BOOLEAN := TRUE;
KQ CHAR(5);
BEGIN
KQ:= CASE PHAI
WHEN TRUE THEN 'NAM'
WHEN FALSE THEN 'NỮ'
ELSE 'KHAC'
END;
DBMS_OUTPUT.PUT_LINE(KQ);
END;
60
Phái = True -> Nam Còn lại là: Nữ
B. Dạng 2:
<Biến nhận Kq>:= Case
When <Biểu thức ĐK 1> Then Kq1
When <Biểu thức ĐK 2> Then Kq2
When <Biểu thức ĐK 3> Then Kq3 …
Else Kq khác;
End;
Ví dụ 1: Cho giá trị n có thể nhận 1, 2, 3 hay >3 và <8 Case
When n = 1 Then ‘One’
When n = 2 Then ‘Two’
When n = 3 Then ‘Three’
When ( n > 3 And n < 8 ) Then ‘Từ 4->7’
Else ‘Other’
End;
Nhận kết quả như sau: KETQUA:= Case
When n = 1 Then ‘One’
When n = 2 Then ‘Two’
When n = 3 Then ‘Three’
When ( n > 3 And n < 8 ) Then ‘Từ 4->7’
Else ‘Other’
End;
Ví dụ 2: Xét ví dụ sử dụng case trong câu truy vấn
Tạo bảng nhân viên với các thuộc tính sau:
CREATE TABLE NHANVIEN( (
MANV CHAR(10) NOT NULL,HONV NCHAR(10) NOT NULL, HONV NCHAR(10) NOT NULL, TENLOT NCHAR(10) NOT NULL, TENNV NCHAR(15) NOT NULL, NGAYSINH DATE NOT NULL, PHAI INT NOT NULL, LUONG FLOAT NULL,
PHG INT NOT NULL,
CONSTRAINT PK_NHANVIEN PRIMARY KEY(MANV)); );