Oracle nâng cấp sử dụng vòng lặp (LOOP) với PL/SQL 21c

Với bản 21c, Oracle đã nâng cấp rất nhiều các tính năng, trong đó có tính năng lặp (LOOP) trong PL/SQL. Dưới đây chúng ta hãy cùng xem cụ thể cách thức sử dụng vòng lặp mới trong Oracle 21c bằng cách so sánh cách thức cũ và cách thức mới.

Lặp nhiều phạm vi

Cách thức cũ:

SQL> set serverout on
SQL> begin
  2    for i in 1 ..10 loop
  3      dbms_output.put_line(i);
  4    end loop;
  5    for i in 100..110 loop
  6      dbms_output.put_line(i);
  7    end loop;
  8    for i in 200..210 loop
  9      dbms_output.put_line(i);
 10    end loop;
 11  end;
 12  /
1
2
3
4
5
6
7
8
9
10
100
101
102
103
104
105
106
107
108
109
110
200
201
202
203
204
205
206
207
208
209
210

PL/SQL procedure successfully completed.

Cách thức mới trong Oracle 21c

SQL> begin
  2    for i in 1 ..10, 100..110, 200..210 loop
  3      dbms_output.put_line(i);
  4    end loop;
  5  end;
  6  /
1
2
3
4
5
6
7
8
9
10
100
101
102
103
104
105
106
107
108
109
110
200
201
202
203
204
205
206
207
208
209
210

PL/SQL procedure successfully completed.

Tăng vòng lặp tùy ý

Giả sử chúng ta cần xử lý vòng lặp tăng với mỗi 3 bước một như sau:

SQL> begin
  2    for i in 1 .. 20 loop
  3       if mod(i,3)=1 then
  4         dbms_output.put_line(i);
  5       end if;
  6    end loop;
  7  end;
  8  /
1
4
7
10
13
16
19

PL/SQL procedure successfully completed.

Cách thức mới trong Oracle 21c

SQL> begin
  2    for i in 1 .. 20 by 3 loop
  3       dbms_output.put_line(i);
  4    end loop;
  5  end;
  6  /
1
4
7
10
13
16
19

PL/SQL procedure successfully completed.

Gán dữ liệu trong vòng lặp

Cách thức cũ:

SQL> declare
  2    type num_list is table of int index by pls_integer;
  3    s1   num_list;
  4  begin
  5    for i in 1 .. 10 loop
  6      s1(i) := i*10;
  7    end loop;
  8  end;
  9  /

PL/SQL procedure successfully completed.

Cách thức mới trong Oracle 21c

SQL> declare
  2    type num_list is table of int index by pls_integer;
  3    s1   num_list;
  4  begin
  5    s1 := num_list(10,20,30,40,50,60,70,80,90,100);
  6  end;
  7  /

PL/SQL procedure successfully completed.

Trên đây là một số cách thức sử dụng mới với vòng lặp trong Oracle 21c, còn rất nhiều điều thú vị khác, hãy cùng khám phá tiếp trong các bài sau nhé