Hướng dẫn sử dụng câu lệnh điều kiện IF trong PL/SQL Oracle.
Câu lệnh điều kiện IF được dùng để thực hiện hoặc bỏ qua các lệnh dựa vào một điều kiện.
IF … THEN
IF … THEN …ELSE
IF … THEN … ELSEIF
Lệnh IF trong PL/SQL được sử dụng để chỉ định một khối lệnh sẽ được thực hiện nếu điều kiện là Đúng (True).
Nếu điều kiện đánh giá là True, các câu lệnh sau THEN sẽ thực thi.Nếu khác, câu lệnh IF không làm gì cả.
IF condition_Dieu_kien THEN
-- Thuc thi cac lenh
statements;
END IF;
Ví dụ sử dụng lệnh IF để lọc tìm nhân viên có mức lương lớn hơn 20 triệu như sau:
DECLARE
v_Nhanvien_Salary NUMBER(15,2) := 30000000 ;
BEGIN
IF v_Nhanvien_Salary > 20000000 THEN
Dbms_Output.put_line(N'Nhân viên có lương lớn hơn > 20000000');
END IF;
END;
Nếu điều kiện đánh giá là đúng (True) thì các lệnh giữa THEN và ELSE sẽ được thực thi.Ngược lại nếu điều kiện là không đúng (False) hoặc Null thì các lệnh giữa ELSE và END IF sẽ được thực thi.
IF condition_Dieu_kien THEN
-- Neu dieu kien la True thi thuc thi cac lenh
statements;
ELSE
-- Nguoc lai thuc thi cac lenh
else_statements;
END IF;
Ví dụ sử dụng lệnh IF ...ELSE để đánh giá kết quả Học Lực của Học Sinh dựa vào Điểm như sau:
DECLARE
v_Hocsinh_Diem NUMBER(2) := 9 ;
v_DanhGia_HocLuc VARCHAR2(100);
BEGIN
IF v_Hocsinh_Diem >= 8 THEN
v_DanhGia_HocLuc := N'Học Sinh Đạt Loại Giỏi';
Dbms_Output.put_line(v_DanhGia_HocLuc);
ELSE
v_DanhGia_HocLuc := N'Học Sinh Không Đạt Loại Giỏi';
Dbms_Output.put_line(v_DanhGia_HocLuc);
END IF;
END;
Nếu một điều kiện là đúng, các điều kiện tiếp theo khác không được đánh giá. Nếu không có điều kiện nào là đúng, các câu lệnh khác giữa ELSE và ENDIF sẽ thực thi. Trong trường hợp bạn bỏ qua mệnh đề ELSE và không có điều kiện nào là TRUE thì IF THEN ELSIF không làm gì cả.
IF condition_1 THEN
statements_1
ELSIF condition_2 THEN
statements_2
[ ELSIF condition_3 THEN
statements_3
]
...
[ ELSE
else_statements
]
END IF;
Ví dụ sử dụng lệnh IF ... THEN ... ELSIF để đánh giá phân loại Học Lực của Học Sinh dựa vào Điểm như sau:
DECLARE
v_Hocsinh_Diem NUMBER(2) := 8 ;
v_DanhGia_HocLuc VARCHAR2(100);
BEGIN
IF v_Hocsinh_Diem >= 8 AND v_Hocsinh_Diem <=10 THEN
v_DanhGia_HocLuc := N'Học Sinh Đạt Loại Giỏi';
Dbms_Output.put_line(v_DanhGia_HocLuc);
ELSIF v_Hocsinh_Diem >= 7 AND v_Hocsinh_Diem < 8 THEN
v_DanhGia_HocLuc := N'Học Sinh Đạt Loại Khá';
Dbms_Output.put_line(v_DanhGia_HocLuc);
ELSIF v_Hocsinh_Diem >= 5 AND v_Hocsinh_Diem < 7 THEN
v_DanhGia_HocLuc := N'Học Sinh Đạt Loại Trung Bình';
Dbms_Output.put_line(v_DanhGia_HocLuc);
ELSIF v_Hocsinh_Diem >= 0 AND v_Hocsinh_Diem < 5 THEN
v_DanhGia_HocLuc := N'Học Sinh Đạt Loại Yếu';
Dbms_Output.put_line(v_DanhGia_HocLuc);
ELSE
v_DanhGia_HocLuc := N'Điểm không nằm trong phạm vi đánh giá';
Dbms_Output.put_line(v_DanhGia_HocLuc);
END IF;
END;