必须编写一个函数,它返回2个用户输入数字之间所有平方的总和。这是我写的,但似乎无法使它工作。 例如。 sumAll(2,5)必须给结果54 。
CREATE OR REPLACE FUNCTION SumAll(integer,integer) RETURNS integer as $$
DECLARE
num1 ALIAS for $1;
num2 ALIAS for $2;
ret_sum integer;
sum1 integer;
BEGIN
for i in num1..num2 LOOP
sum1:=i*i;
ret_sum=ret_sum+sum1;
END LOOP;
return ret_sum;
END
$$ language 'plpgsql';
它不起作用。 我做错了什么?
答案 0 :(得分:1)
您忘记初始化一个变量,在for循环之前添加ret_sum:=0;
。
答案 1 :(得分:1)
@pukipuki指出了你的错误。不过,我通常会简化语法:
CREATE OR REPLACE FUNCTION sumall(_num1 int, _num2 int, OUT ret_sum int)
RETURNS int AS
$BODY$
BEGIN
ret_sum := 0;
FOR i IN _num1 .. _num2 LOOP
ret_sum := ret_sum + i*i;
END LOOP;
END
$BODY$ LANGUAGE plpgsql;