Oracle PL/SQL FOR LOOP kèm ví dụ

Vòng lặp For là gì?

Câu lệnh “FOR LOOP” phù hợp nhất khi bạn muốn thực thi mã trong một số lần đã biết thay vì dựa trên một số điều kiện khác.

Trong vòng lặp này, giới hạn dưới và giới hạn cao hơn sẽ được chỉ định và miễn là biến vòng lặp nằm trong phạm vi này thì vòng lặp sẽ được thực thi.

Biến vòng lặp có tính tự tăng, do đó không cần thao tác tăng rõ ràng trong vòng lặp này. Biến vòng lặp không cần phải khai báo vì nó được khai báo ngầm.

FOR <loop_variable> in <lower_limit> .. <higher_limit> 
LOOP
<execution block starts>
.
.
.
<execution_block_ends>
 END LOOP;

Giải thích cú pháp:

  • Trong cú pháp trên, từ khóa 'FOR' đánh dấu sự bắt đầu của vòng lặp và 'END LOOP' đánh dấu sự kết thúc của vòng lặp.
  • Biến vòng lặp được đánh giá mọi lúc trước khi thực hiện phần thực thi.
  • Khối thực thi chứa tất cả các mã cần được thực thi. Phần thực thi có thể chứa bất kỳ câu lệnh thực thi nào.
  • loop_variable được khai báo ngầm trong quá trình thực thi toàn bộ vòng lặp và phạm vi của loop_variable này sẽ chỉ nằm trong vòng lặp này.
  • Nếu biến vòng lặp nằm ngoài phạm vi thì điều khiển sẽ thoát khỏi vòng lặp.
  • Vòng lặp có thể được thực hiện theo thứ tự ngược lại bằng cách thêm từ khóa 'REVERSE' trước low_limit.

Ví dụ 1: Trong ví dụ này, chúng ta sẽ in số từ 1 đến 5 bằng cách sử dụng câu lệnh vòng lặp FOR. Để thực hiện, chúng ta sẽ thực thi đoạn mã sau.

Oracle PL/SQL CHO VÒNG TAY

BEGIN
dbms Qutput.put linef.Prp.gram started.' );
FOR a IN 1 .. 5
LOOP
dbms_output.put_line(a);
END LOOP:
dbms_output.put_iine('Program completed.'); 
END;
/

Giải thích mã:

  • Dòng mã 2: In câu lệnh “Chương trình đã bắt đầu”.
  • Dòng mã 3: Từ khóa 'FOR' đánh dấu sự bắt đầu của vòng lặp và loop_variable 'a' được khai báo. Bây giờ nó sẽ có giá trị bắt đầu từ 1 đến 5
  • Dòng mã 5: In giá trị của 'a'.
  • Dòng mã 6: Từ khóa 'END LOOP' đánh dấu sự kết thúc của khối thực thi.
  • Mã từ dòng 5 sẽ tiếp tục thực thi cho đến khi 'a' đạt giá trị 6, vì điều kiện sẽ thất bại và điều khiển sẽ THOÁT khỏi vòng lặp.
  • Dòng mã 7: In thông báo “Chương trình đã hoàn thành”

Vòng lồng nhau

Các câu lệnh vòng lặp cũng có thể được lồng vào nhau. Vòng lặp bên ngoài và bên trong có thể có nhiều loại khác nhau. Trong vòng lặp lồng nhau, cứ mỗi một giá trị lặp của vòng lặp bên ngoài, vòng lặp bên trong sẽ được thực thi đầy đủ.

Vòng lồng nhau

LOOP -outer
<execution block starts>
LOOP — inner
<execution_part> 
END LOOP; 
<execution_block_ends> 
END LOOP;

Giải thích cú pháp:

  • Trong cú pháp trên, vòng lặp bên ngoài có thêm một vòng lặp bên trong.
  • Các vòng lặp có thể thuộc bất kỳ loại nào và phần chức năng thực thi cũng giống nhau.

Ví dụ 1: Trong ví dụ này, chúng ta sẽ in số từ 1 đến 3 bằng cách sử dụng câu lệnh vòng lặp FOR. Mỗi số sẽ được in ra nhiều lần bằng giá trị của nó. Để làm được điều đó, chúng ta sẽ thực thi đoạn mã sau.

Vòng lồng nhau

Vòng lồng nhau

DECLARE 
b NUMBER;
BEGIN
dbms output put line(‘Program started' );
FOR a IN 1..3 
LOOP
b:=1;
WHILE (a>=b)
LOOP
dbms output put line(a);
b:=b+1;
END LOOP;‭	
END LOOP;‭	‬
dbms_output.put_line('Program completed' );
END;
/

Giải thích mã:

  • Dòng mã 2: Khai báo biến 'b' là kiểu dữ liệu 'SỐ'.
  • Dòng mã 4: In câu lệnh “Chương trình đã bắt đầu”.
  • Dòng mã 5: Từ khóa 'FOR' đánh dấu sự bắt đầu của vòng lặp và loop_variable 'a' được khai báo. Bây giờ nó sẽ có giá trị bắt đầu từ 1 đến 3
  • Dòng mã 7: Đặt lại giá trị của 'b' thành '1' mỗi lần.
  • Dòng mã 8: Bên trong trong khi lặp lại kiểm tra điều kiện a>=b.
  • Dòng mã 10: In giá trị của 'a' miễn là điều kiện trên được thỏa mãn.
  • Dòng mã 14: In thông báo “Chương trình đã hoàn thành”

Tổng kết

Vòng lặp Vòng lặp FOR
Tiêu chí THOÁT Thoát khi bộ đếm đạt đến giới hạn
Sử dụng Tốt để sử dụng khi biết số vòng lặp được thực thi.