Trong chương này, chúng ta sẽ thảo luận về các điều kiện trong PL / SQL. Cấu trúc ra quyết định yêu cầu người lập trình chỉ định một hoặc nhiều điều kiện để được đánh giá hoặc kiểm tra bởi chương trình, cùng với một câu lệnh hoặc các câu lệnh sẽ được thực thi nếu điều kiện được xác định là đúng, và tùy chọn, các câu lệnh khác sẽ được thực thi nếu điều kiện được xác định là sai.
Sau đây là dạng chung của cấu trúc có điều kiện (tức là ra quyết định) điển hình được tìm thấy trong hầu hết các ngôn ngữ lập trình:
Ngôn ngữ lập trình PL / SQL cung cấp các loại câu lệnh ra quyết định sau. Nhấp vào các liên kết sau để kiểm tra chi tiết của chúng.
STT | Tuyên bố & Mô tả |
---|---|
1 | Câu lệnh IF - THEN Câu lệnh IF liên kết một điều kiện với một chuỗi câu lệnh được bao bởi các từ khóa THEN và END IF . Nếu điều kiện là đúng, các câu lệnh sẽ được thực thi và nếu điều kiện là sai hoặc NULL thì câu lệnh IF không làm gì cả. |
2 | Câu lệnh IF-THEN-ELSE Câu lệnh IF thêm từ khóa ELSE theo sau bởi một chuỗi câu lệnh thay thế. Nếu điều kiện là false hoặc NULL, thì chỉ chuỗi câu lệnh thay thế được thực thi. Nó đảm bảo rằng một trong hai chuỗi câu lệnh được thực thi. |
3 | Câu lệnh IF-THEN-ELSIF Nó cho phép bạn chọn giữa một số lựa chọn thay thế. |
4 | Tuyên bố tình huống Giống như câu lệnh IF, câu lệnh CASE chọn một chuỗi các câu lệnh để thực thi. Tuy nhiên, để chọn chuỗi, câu lệnh CASE sử dụng một bộ chọn thay vì nhiều biểu thức Boolean. Bộ chọn là một biểu thức có giá trị được sử dụng để chọn một trong một số lựa chọn thay thế. |
5 | Câu lệnh CASE đã tìm kiếm Câu lệnh CASE được tìm kiếm không có bộ chọn và đó là mệnh đề WHEN chứa các điều kiện tìm kiếm mang lại giá trị Boolean. |
6 | IF-THEN-ELSE lồng nhau Bạn có thể sử dụng một câu lệnh IF-THEN hoặc IF-THEN-ELSIF bên trong (các) câu lệnh IF-THEN hoặc IF-THEN-ELSIF khác . |
PL / SQL - Câu lệnh IF-THEN
Đây là dạng đơn giản nhất của câu lệnh điều khiển IF , thường được sử dụng trong việc ra quyết định và thay đổi luồng điều khiển của việc thực hiện chương trình.
Câu lệnh IF liên kết một điều kiện với một chuỗi câu lệnh được bao bởi các từ khóa THEN và END IF . Nếu điều kiện là TRUE , các câu lệnh sẽ được thực thi, và nếu điều kiện là FALSE hoặc NULL , thì câu lệnh IF không có tác dụng gì.
Cú pháp
Cú pháp cho câu lệnh IF-THEN là -
IF condition THEN S; END IF;
Trong đó điều kiện là một Boolean hoặc điều kiện quan hệ và S là một câu lệnh đơn giản hoặc phức hợp. Sau đây là một ví dụ về câu lệnh IF-THEN:
IF (a <= 20) THEN c:= c+1; END IF;
Nếu điều kiện biểu thức Boolean đánh giá là true, thì khối mã bên trong câu lệnh if sẽ được thực thi. Nếu biểu thức Boolean đánh giá là false, thì bộ mã đầu tiên sau khi kết thúc câu lệnh if (sau khi kết thúc đóng if) sẽ được thực thi.
Sơ đồ khối
ví dụ 1
Hãy để chúng tôi thử một ví dụ sẽ giúp bạn hiểu khái niệm -
DECLARE a number(2) := 10; BEGIN a:= 10; -- check the boolean condition using if statement IF( a < 20 ) THEN -- if condition is true then print the following dbms_output.put_line('a is less than 20 ' ); END IF; dbms_output.put_line('value of a is : ' || a); END; /
Khi đoạn mã trên được thực thi tại dấu nhắc SQL, nó tạo ra kết quả sau:
a is less than 20 value of a is : 10 PL/SQL procedure successfully completed.
Ví dụ 2
Hãy xem xét chúng ta có một bảng và một vài bản ghi trong bảng như chúng ta đã tạo trong Các loại biến PL / SQL
DECLARE c_id customers.id%type := 1; c_sal customers.salary%type; BEGIN SELECT salary INTO c_sal FROM customers WHERE id = c_id; IF (c_sal <= 2000) THEN UPDATE customers SET salary = salary + 1000 WHERE id = c_id; dbms_output.put_line ('Salary updated'); END IF; END; /
Khi đoạn mã trên được thực thi tại dấu nhắc SQL, nó tạo ra kết quả sau:
Salary updated PL/SQL procedure successfully completed.
PL / SQL - Câu lệnh IF-THEN-ELSE
Một chuỗi các câu lệnh IF-THEN có thể được theo sau bởi một chuỗi câu lệnh ELSE tùy chọn , thực thi khi điều kiện là FALSE .
Cú pháp
Cú pháp cho câu lệnh IF-THEN-ELSE là:
IF condition THEN S1; ELSE S2; END IF;
Trong đó, S1 và S2 là chuỗi các câu lệnh khác nhau. Trong câu lệnh IF-THEN-ELSE , khi điều kiện kiểm tra là TRUE, câu lệnh S1 được thực thi và câu lệnh S2 bị bỏ qua; khi điều kiện kiểm tra là FALSE, thì S1 bị bỏ qua và câu lệnh S2 được thực hiện. Ví dụ -
IF color = red THEN dbms_output.put_line('You have chosen a red car') ELSE dbms_output.put_line('Please choose a color for your car'); END IF;
Nếu điều kiện biểu thức Boolean đánh giá là true, thì khối mã if-then sẽ được thực thi nếu không khối mã khác sẽ được thực thi.
Sơ đồ khối
Thí dụ
Hãy để chúng tôi thử một ví dụ sẽ giúp bạn hiểu khái niệm -
DECLARE a number(3) := 100; BEGIN -- check the boolean condition using if statement IF( a < 20 ) THEN -- if condition is true then print the following dbms_output.put_line('a is less than 20 ' ); ELSE dbms_output.put_line('a is not less than 20 ' ); END IF; dbms_output.put_line('value of a is : ' || a); END; /
Khi đoạn mã trên được thực thi tại dấu nhắc SQL, nó tạo ra kết quả sau:
a is not less than 20 value of a is : 100 PL/SQL procedure successfully completed.
PL / SQL - Câu lệnh IF-THEN-ELSIF
Câu lệnh IF-THEN-ELSIF cho phép bạn chọn giữa một số lựa chọn thay thế. Một câu lệnh IF-THEN có thể được theo sau bởi một câu lệnh ELSIF ... ELSE tùy chọn . Mệnh đề ELSIF cho phép bạn thêm các điều kiện bổ sung.
Khi sử dụng câu lệnh IF-THEN-ELSIF , có một số điểm cần lưu ý.
Đó là ELSIF, không phải ELSEIF.
Một câu lệnh IF-THEN có thể không có hoặc một ELSE và nó phải đứng sau bất kỳ ELSIF nào.
Một câu lệnh IF-THEN có thể không có nhiều ELSIF và chúng phải đứng trước ELSE.
Sau khi ELSIF thành công, không có ELSIF hoặc ELSE nào còn lại sẽ được kiểm tra.
Cú pháp
Cú pháp của câu lệnh IF-THEN-ELSIF trong ngôn ngữ lập trình PL / SQL là:
IF(boolean_expression 1)THEN S1; -- Executes when the boolean expression 1 is true ELSIF( boolean_expression 2) THEN S2; -- Executes when the boolean expression 2 is true ELSIF( boolean_expression 3) THEN S3; -- Executes when the boolean expression 3 is true ELSE S4; -- executes when the none of the above condition is true END IF;
Thí dụ
DECLARE a number(3) := 100; BEGIN IF ( a = 10 ) THEN dbms_output.put_line('Value of a is 10' ); ELSIF ( a = 20 ) THEN dbms_output.put_line('Value of a is 20' ); ELSIF ( a = 30 ) THEN dbms_output.put_line('Value of a is 30' ); ELSE dbms_output.put_line('None of the values is matching'); END IF; dbms_output.put_line('Exact value of a is: '|| a ); END; /
Khi đoạn mã trên được thực thi tại dấu nhắc SQL, nó tạo ra kết quả sau:
None of the values is matching Exact value of a is: 100 PL/SQL procedure successfully completed.
PL / SQL - Câu lệnh CASE
Giống như câu lệnh IF , câu lệnh CASE chọn một chuỗi các câu lệnh để thực thi. Tuy nhiên, để chọn chuỗi, câu lệnh CASE sử dụng một bộ chọn thay vì nhiều biểu thức Boolean. Bộ chọn là một biểu thức, giá trị của nó được sử dụng để chọn một trong một số lựa chọn thay thế.
Cú pháp
Cú pháp cho câu lệnh trường hợp trong PL / SQL là:
CASE selector WHEN 'value1' THEN S1; WHEN 'value2' THEN S2; WHEN 'value3' THEN S3; ... ELSE Sn; -- default case END CASE;
Sơ đồ khối
Thí dụ
DECLARE grade char(1) := 'A'; BEGIN CASE grade when 'A' then dbms_output.put_line('Excellent'); when 'B' then dbms_output.put_line('Very good'); when 'C' then dbms_output.put_line('Well done'); when 'D' then dbms_output.put_line('You passed'); when 'F' then dbms_output.put_line('Better try again'); else dbms_output.put_line('No such grade'); END CASE; END; /
Khi đoạn mã trên được thực thi tại dấu nhắc SQL, nó tạo ra kết quả sau:
Excellent PL/SQL procedure successfully completed.
PL / SQL - Câu lệnh CASE đã tìm kiếm
Câu lệnh CASE được tìm kiếm không có bộ chọn và các mệnh đề WHEN của câu lệnh chứa các điều kiện tìm kiếm cung cấp giá trị Boolean.
Cú pháp
Cú pháp cho câu lệnh trường hợp được tìm kiếm trong PL / SQL là:
CASE WHEN selector = 'value1' THEN S1; WHEN selector = 'value2' THEN S2; WHEN selector = 'value3' THEN S3; ... ELSE Sn; -- default case END CASE;
Sơ đồ dòng chảy
Thí dụ
DECLARE grade char(1) := 'B'; BEGIN case when grade = 'A' then dbms_output.put_line('Excellent'); when grade = 'B' then dbms_output.put_line('Very good'); when grade = 'C' then dbms_output.put_line('Well done'); when grade = 'D' then dbms_output.put_line('You passed'); when grade = 'F' then dbms_output.put_line('Better try again'); else dbms_output.put_line('No such grade'); end case; END; /
Khi đoạn mã trên được thực thi tại dấu nhắc SQL, nó tạo ra kết quả sau:
Very good PL/SQL procedure successfully completed.
PL / SQL - Câu lệnh IF-THEN-ELSE lồng nhau
Việc lồng các câu lệnh IF-ELSE luôn hợp pháp trong lập trình PL / SQL , có nghĩa là bạn có thể sử dụng một câu lệnh IF hoặc ELSE IF bên trong (các) câu lệnh IF hoặc ELSE IF khác .
Cú pháp
IF( boolean_expression 1)THEN -- executes when the boolean expression 1 is true IF(boolean_expression 2) THEN -- executes when the boolean expression 2 is true sequence-of-statements; END IF; ELSE -- executes when the boolean expression 1 is not true else-statements; END IF;
Thí dụ
DECLARE a number(3) := 100; b number(3) := 200; BEGIN -- check the boolean condition IF( a = 100 ) THEN -- if condition is true then check the following IF( b = 200 ) THEN -- if condition is true then print the following dbms_output.put_line('Value of a is 100 and b is 200' ); END IF; END IF; dbms_output.put_line('Exact value of a is : ' || a ); dbms_output.put_line('Exact value of b is : ' || b ); END; /
Khi đoạn mã trên được thực thi tại dấu nhắc SQL, nó tạo ra kết quả sau:
Value of a is 100 and b is 200 Exact value of a is : 100 Exact value of b is : 200 PL/SQL procedure successfully completed.
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội
=============================
PL/SQL, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty