我正在使用netezza中的存储过程。 我想循环一系列的值。 循环的上限由用户作为变量传递给sproc。
即。 EXECUTE SPROC(12);
所以问题是Netezza(aginity workbench)不会接受这个输入变量作为循环的上限。
即。
DECLARE
x alias as $1.
begin
for i in 1..x loop
...do stufff...
end loop;
end;
我知道这可以使用循环和退出样式循环来解决但是它让我知道为什么我不能做上述情况,因为文档表明它可以这样做。
任何人都知道为什么这不起作用或如何使它工作?
感谢。 克兰西。
答案 0 :(得分:2)
请参阅下面的工作示例 -
CREATE OR REPLACE PROCEDURE generateTime(integer)
LANGUAGE NZPLSQL RETURNS varchar(255) AS
BEGIN_PROC
DECLARE
p_abc integer;
p_bcd integer;
p_var1 ALIAS FOR $1;
BEGIN
p_bcd := ISNULL(p_var1, 10);
raise notice 'p_bcd=%',p_bcd;
FOR p_abc in 0..(p_bcd)
LOOP
raise notice 'Hello World %', p_abc;
END LOOP;
END;
END_PROC;
希望这会有所帮助。