Oracle 中的 For In 循环 PL/SQL
For In loop in Oracle PL/SQL
在 PL/SQL 中,我可以使用 FOR IN 循环从 1-20 迭代:
FOR counter IN 1..20
我想知道的是,我是否可以对此做一个简单的改动,让我只对 1-20 之间的偶数值进行循环迭代?即计数器会变为 2、4、6、... 20
添加到 Gordon 的评论...
这是语法,所以没有内置方式
http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/controlstatements.htm#LNPLS411
[ label ] FOR index IN [ REVERSE ] lower_bound..upper_bound LOOP
statements
END LOOP [ label ];
可以在FOR LOOP语句中模拟STEP子句
http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/controlstatements.htm#BCGJHACI
DECLARE
step PLS_INTEGER := 5;
BEGIN
FOR i IN 1..3 LOOP
DBMS_OUTPUT.PUT_LINE (i*step);
END LOOP;
END;
SET SERVEROUTPUT ON;--default buffer size is 1000 000
declare
idx number:=0;
step number:=10000;
begin
DBMS_OUTPUT.ENABLE(Null);-- unlimited output buffer
for i in 1..3 loop
DBMS_OUTPUT.PUT_LINE('idex: from [' ||idx|| ' ] to [' || (idx+step) || ']');
--..... you loop logic
select t.id, row_number() over(order by t.id) rw
from t
where rw >= idx and rw < (idx+step)
idx:= idx+step; --increment step.
end loop;
end;
在 PL/SQL 中,我可以使用 FOR IN 循环从 1-20 迭代:
FOR counter IN 1..20
我想知道的是,我是否可以对此做一个简单的改动,让我只对 1-20 之间的偶数值进行循环迭代?即计数器会变为 2、4、6、... 20
添加到 Gordon 的评论...
这是语法,所以没有内置方式
http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/controlstatements.htm#LNPLS411
[ label ] FOR index IN [ REVERSE ] lower_bound..upper_bound LOOP
statements
END LOOP [ label ];
可以在FOR LOOP语句中模拟STEP子句
http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/controlstatements.htm#BCGJHACI
DECLARE
step PLS_INTEGER := 5;
BEGIN
FOR i IN 1..3 LOOP
DBMS_OUTPUT.PUT_LINE (i*step);
END LOOP;
END;
SET SERVEROUTPUT ON;--default buffer size is 1000 000
declare
idx number:=0;
step number:=10000;
begin
DBMS_OUTPUT.ENABLE(Null);-- unlimited output buffer
for i in 1..3 loop
DBMS_OUTPUT.PUT_LINE('idex: from [' ||idx|| ' ] to [' || (idx+step) || ']');
--..... you loop logic
select t.id, row_number() over(order by t.id) rw
from t
where rw >= idx and rw < (idx+step)
idx:= idx+step; --increment step.
end loop;
end;