我不是软件程序员。我想为我的工作学习pl/sql。我检查了一个匿名过程,包括嵌套的基本循环,如下所示。由于这个匿名块被发现“166”。我无法理解如何在下面的语句中迭代for循环。有人能帮我解决这个问题吗?如果你能帮助我解决这个问题,我将不胜感激。
DECLARE
s PLS_INTEGER := 0;
i PLS_INTEGER := 0;
j PLS_INTEGER;
BEGIN
<<outer_loop>>
LOOP
i := i + 1;
j := 0;
<<inner_loop>>
LOOP
j := j + 1;
s := s + i * j; -- Sum several products
EXIT inner_loop WHEN (j > 5);
EXIT outer_loop WHEN ((i * j) > 15);
END LOOP inner_loop;
END LOOP outer_loop;
DBMS_OUTPUT.PUT_LINE
('The sum of products equals: ' || TO_CHAR(s));
END;
/
已处理对账单。积和等于:166
2条答案
按热度按时间hts6caw31#
为了更好地理解循环是如何结束的,您需要在流程中添加一些行来帮助您理解为什么会出现循环
循环应用您在代码中得到的公式,它是应用于两个循环的出口,定义了循环何时结束。在您的例子中,第一个循环应该在j>5时结束,但是您有一个需要在之前结束的二次循环,它只在((i*j)>15时结束,这只在i=4和j=4时发生,所以16。
希望能澄清一点
k5hmc34c2#
您只需在内部\u循环中使用一个dbms \u输出即可获得此想法,如下所示: