Trong Oracle PL / SQL, câu lệnh WHILE LOOP thực thi đoạn mã được viết giữa WHILE LOOP và END LOOP cho đến khi điều kiện là đúng. Dưới đây, tôi đưa ra một số ví dụ cho câu lệnh Oracle WHILE LOOP.
Cú pháp
WHILE logical_condition LOOP -- some PL/SQL code END LOOP;
Ví dụ về Oracle WHILE LOOP
1. Lặp lại 10 lần và in bảng
Trong ví dụ sau, WHILE LOOP sẽ thực hiện các câu lệnh cho đến khi giá trị của biến n_num nhỏ hơn hoặc bằng 10. Nó sẽ in ra bảng 2 bằng cách tăng giá trị của biến n_num với 1 cho mỗi lần lặp của vòng lặp.
SET SERVEROUTPUT ON; DECLARE n_num NUMBER; n_table number := 2; BEGIN n_num := 1; WHILE n_num <= 10 LOOP DBMS_OUTPUT.put_line ('2 x ' || n_num || ' = '||(n_table * n_num)); n_num := n_num + 1; END LOOP; END; /
Đầu ra:
2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 2 x 4 = 8 2 x 5 = 10 2 x 6 = 12 2 x 7 = 14 2 x 8 = 16 2 x 9 = 18 2 x 10 = 20 PL/SQL procedure successfully completed.
Đừng quên tăng giá trị của biến n_num để nó có thể đạt tới 10, nếu không nó sẽ là vòng lặp vô hạn.
2. Vòng lặp cho đến khi Giá trị biến Boolean là TRUE
Trong ví dụ sau, nó sẽ lặp cho đến khi giá trị của biến boolean b_run là TRUE và sẽ in ra giá trị của biến n_num bằng cách tăng nó với 1 cho mỗi lần lặp và khi giá trị của biến n_num lớn hơn 5 thì sẽ đặt biến b_run thành FALSE , để WHILE LOOP có thể hoàn thành công việc của nó.
SET SERVEROUTPUT ON; DECLARE n_num NUMBER; b_run BOOLEAN := TRUE; BEGIN n_num := 1; WHILE b_run LOOP DBMS_OUTPUT.put_line (n_num || ' Times'); n_num := n_num + 1; IF n_num > 5 THEN b_run := FALSE; END IF; END LOOP; END; /
Đầu ra:
1 Times 2 Times 3 Times 4 Times 5 Times PL/SQL procedure successfully completed.
Đối với điều này, đừng quên đặt giá trị biến b_run thành FALSE, nếu không nó sẽ là vòng lặp vô hạn. Bạn cũng có thể viết exit; thay vì b_run:=FALSE; câu lệnh để thoát khỏi vòng lặp .
Xem thêm:
- Ví dụ về Oracle FOR LOOP REVERSE
- Chương trình PL / SQL để in chi tiết nhân viên