Oracle 对于具有2个迭代器变量的循环
我需要对带有2个变量的循环进行迭代。我搜索过这样的东西:Oracle 对于具有2个迭代器变量的循环,oracle,plsql,Oracle,Plsql,我需要对带有2个变量的循环进行迭代。我搜索过这样的东西: 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 In
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;
您需要一个循环,其中一个变量减少,而另一个(循环计数器)增加,每个循环的速率相同(基于您的注释)。您不需要将这两个变量都作为循环本身的一部分(而且无论如何也不能这样做),但由于它们是相关的,您可以从另一个变量中计算一个:
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-您是否计划将现有变量的反转添加到数组的末尾,而不是替换它?不过,在这两种情况下,您都不需要第二个变量。您需要一个循环,其中一个变量减少,而另一个(循环计数器)增加,每个循环的速率相同(根据您的注释)。您不需要将这两个变量都作为循环本身的一部分(而且无论如何也不能这样做),但由于它们是相关的,您可以从另一个变量中计算一个:
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-您是否计划将现有变量的反转添加到数组的末尾,而不是替换它?不过,在这两种情况下都不需要第二个变量。根据for循环的语法,我不确定是否可以在单个循环中有两个索引
根据for循环的语法,我不确定在单个循环中是否可以有两个索引
您希望它循环多少次-5、10、50或其他?如何在循环中使用变量?也许你可以编辑这个问题来解释你到底想做什么。@AlexPoole我会更新我的问题,谢谢你的提醒。你希望它循环多少次-5、10、50或其他?如何在循环中使用变量?也许你可以编辑这个问题来解释你实际上想做什么。@AlexPoole我会更新我的问题,谢谢你的提醒。你不需要两个变量作为循环本身的一部分(而且无论如何也不能这样做)。你只是总结了我需要的所有答案;谢谢您不需要将这两个变量都作为循环本身的一部分(而且无论如何也不能这样做)。你只是总结了我需要的所有答案;谢谢感谢schemaThanks提供的模式