您的函数声明为
returns void
所以你不能从中返回任何东西。如果要返回多个值,则需要使用
returns setof integer
但它有更多的问题。
你应该给你的参数一个名字(不是错误,但良好的编码风格)
从您需要使用的函数返回值
return
。返回多个值(因为
returns setof
)你需要使用
return next
动态SQL不需要返回值,可以直接返回变量。
也不是错误,但是:
window
是一个关键字,我不会使用具有该名称的变量。
CREATE OR REPLACE FUNCTION test(p_input int[])
RETURNS setof integer
as
DECLARE
l_value INT;
BEGIN
FOREACH l_value IN ARRAY p_input
LOOP
return next window;
END LOOP;
end;
LANGUAGE plpgsql;</code>
</醇>
应用所有这些,您的函数应如下所示:
我不确定你是否知道,但是已经有一个内置函数可以实现同样的目的:
unnest()