FOR LOOP Iteration Enhancements in Oracle Database 21c
The FOR LOOP iteration control has been enhanced in Oracle database 21c.
oracle 21cconfigurationintermediate
by OracleDba
14 views
The FOR LOOP iteration control has been enhanced in Oracle database 21c.
123456789101112131415161718192021222324252627282930313233
set serveroutput on
begin
for i in 1 .. 5 loop
dbms_output.put_line(i);
end loop;
end;
/
1
2
3
4
5
PL/SQL procedure successfully completed.
SQL>
begin
for i in reverse 1 .. 5 loop
dbms_output.put_line(i);
end loop;
end;
/
5
4
3
2
1
PL/SQL procedure successfully completed.
SQL>12345678910111213141516171819
begin
for i in 1 .. 3, reverse 7 .. 9, 20 .. 22 loop
dbms_output.put_line(i);
end loop;
end;
/
1
2
3
9
8
7
20
21
22
PL/SQL procedure successfully completed.
SQL>12345678910111213141516
begin
for i in 1 .. 5 by 2, reverse 1 .. 5 by 2 loop
dbms_output.put_line(i);
end loop;
end;
/
1
3
5
5
3
1
PL/SQL procedure successfully completed.
SQL>123456789101112131415161718192021222324252627282930313233343536373839404142
begin
for i in 1.2 .. 2.2 loop
dbms_output.put_line(i);
end loop;
end;
/
1
2
PL/SQL procedure successfully completed.
SQL>
begin
for i number(5,1) in 1.2 .. 2.2 loop
dbms_output.put_line(i);
end loop;
end;
/
1.2
2.2
PL/SQL procedure successfully completed.
SQL>
begin
for i number(5,1) in 1.2 .. 2.2 by 0.2 loop
dbms_output.put_line(i);
end loop;
end;
/
1.2
1.4
1.6
1.8
2
2.2
PL/SQL procedure successfully completed.
SQL>123456789101112131415161718192021222324252627
begin
for i in 2 loop
dbms_output.put_line(i);
end loop;
end;
/
2
PL/SQL procedure successfully completed.
SQL>
begin
for i in 1, repeat i*5 while i < 1000 loop
dbms_output.put_line(i);
end loop;
end;
/
1
5
25
125
625
PL/SQL procedure successfully completed.
SQL>12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
declare
type tab_t is table of pls_integer index by pls_integer;
l_tab tab_t;
begin
l_tab(1) := 20;
l_tab(10) := 30;
l_tab(100) := 40;
for i in values of l_tab loop
dbms_output.put_line(i);
end loop;
end;
/
20
30
40
PL/SQL procedure successfully completed.
SQL>
declare
type tab_t is table of pls_integer index by pls_integer;
l_tab tab_t := tab_t(1 => 20, 10 => 30, 100 => 40);
begin
for i in values of l_tab loop
dbms_output.put_line(i);
end loop;
end;
/
20
30
40
PL/SQL procedure successfully completed.
SQL>
declare
type tab_t is table of pls_integer index by pls_integer;
l_tab tab_t := tab_t(1 => 20, 10 => 30, 100 => 40);
l_idx pls_integer;
begin
l_idx := l_tab.first;
while l_idx is not null loop
dbms_output.put_line(l_tab(l_idx));
l_idx := l_tab.next(l_idx);
end loop;
end;
/
20
30
40
PL/SQL procedure successfully completed.
SQL>1234567891011121314151617181920212223242526272829303132333435
declare
type tab_t is table of pls_integer index by pls_integer;
l_tab tab_t := tab_t(1 => 20, 10 => 30, 100 => 40);
begin
for i in indices of l_tab loop
dbms_output.put_line(i);
end loop;
end;
/
1
10
100
PL/SQL procedure successfully completed.
SQL>
declare
type tab_t is table of varchar2(32767) index by pls_integer;
l_main_tab tab_t := tab_t(1 => 'ONE', 2 => 'TWO', 3 => 'THREE', 4 => 'FOUR', 5 => 'FIVE');
l_idx_tab tab_t := tab_t(1 => null, 3 => null, 5 => null);
begin
for i in indices of l_idx_tab loop
dbms_output.put_line(l_main_tab(i));
end loop;
end;
/
ONE
THREE
FIVE
PL/SQL procedure successfully completed.
SQL>123456789101112131415161718
declare
type tab_t is table of varchar2(32767) index by pls_integer;
l_tab tab_t := tab_t(1 => 'ONE', 2 => 'TWO', 3 => 'THREE', 4 => 'FOUR', 5 => 'FIVE');
begin
for i,v in pairs of l_tab loop
dbms_output.put_line('index=' || i || ' value=' || v);
end loop;
end;
/
index=1 value=ONE
index=2 value=TWO
index=3 value=THREE
index=4 value=FOUR
index=5 value=FIVE
PL/SQL procedure successfully completed.
SQL>1234567891011121314151617181920212223242526272829
begin
for i in 1 .. 10 when mod(i,3)=0 loop
dbms_output.put_line(i);
end loop;
end;
/
3
6
9
PL/SQL procedure successfully completed.
SQL>
begin
for i in 1 .. 10 while i <= 5 loop
dbms_output.put_line(i);
end loop;
end;
/
1
2
3
4
5
PL/SQL procedure successfully completed.
SQL>Please to add comments
No comments yet. Be the first to comment!