我需要使用2个变量迭代 FOR 循环。我搜索了类似的东西:
DECLARE
counter INT;
max INT;
...
FOR counter IN REVERSE 1..10, max IN 1..5 LOOP
-- some code
END LOOP;
但找不到任何参考。有这样的事吗?
我正在尝试颠倒数组元素的顺序:
DECLARE
TYPE IntArray IS VARRAY(80) OF INT; -- array of 80 ints
myArray IntArray;
counter INT; -- counter variable 1
max_limit INT; -- counter variable 2
tmp INT;
BEGIN
myArray := IntArray();
max_limit := 20;
myArray.EXTEND(max_limit);
-- I want to do something like this:
FOR counter IN 1..10, max_limit IN REVERSE 10..20 LOOP
-- reverse elements
END LOOP;
END;
答案 0 :(得分:2)
答案 1 :(得分:1)
你想要一个循环,其中一个变量减少而另一个变量(循环计数器)增加,每个循环的速率相同(基于你的注释)。你不需要将这两个变量作为循环本身的一部分(并且无论如何都不能这样做,as the for loop
syntax shows),但是因为它们相关,你可以只计算另一个:
FOR counter IN 1..10 LOOP
tmp := max_value - counter;
-- reverse elements
END LOOP;
或直接递减:
FOR counter IN 1..10 LOOP
max_value := max_counter - 1;
-- reverse elements
END LOOP;
您还没有显示要反转的数组,并且不确定为什么您的两个变量似乎被10偏移 - 可能是您计划将现有的变量追加到它的末尾,而不是比取代它?在任何一种情况下,你都不需要第二个变量。