传递给函数的参数,该函数返回按表索引值

问题描述 投票:0回答:0

我在 pl/sql 文档(PL/SQL 用户指南和参考)中有一个示例

1   DECLARE
2   TYPE sum_multiples IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;
3   n PLS_INTEGER := 5; -- number of multiples to sum for display
4   sn PLS_INTEGER := 10; -- number of multiples to sum
5   m PLS_INTEGER := 3; -- multiple
6   FUNCTION get_sum_multiples(multiple IN PLS_INTEGER, num IN PLS_INTEGER)
7   RETURN sum_multiples IS
8   s sum_multiples;
9   BEGIN
10  FOR i IN 1..num LOOP
11  s(i) := multiple * ((i * (i + 1)) / 2) ; -- sum of multiples
12  END LOOP;
13  RETURN s;
14  END get_sum_multiples;
15  BEGIN
16  #NAME?
17  DBMS_OUTPUT.PUT_LINE('Sum of the first ' || TO_CHAR(n) || ' multiples of ' ||
18  TO_CHAR(m) || ' is ' || TO_CHAR(get_sum_multiples (m, sn)(n)));
19  END;
20  /

3的前5个倍数之和是45

我无法理解第 18 行中的“TO_CHAR(get_sum_multiples (m, sn)(n))”。 参数是如何传递的,尽管这段代码有效,但 (m, sn)(n) 之间没有分隔符。 任何人都可以回答这个代码。

我改变了函数调用 TO_CHAR(get_sum_multiples (m, sn)(n)) 到 TO_CHAR(get_sum_multiples (m, sn),(n)) 但它返回错误

oracle plsql collections parameter-passing plsqldeveloper
© www.soinside.com 2019 - 2024. All rights reserved.