FOR循环Netezza问题

时间:2014-02-19 03:26:52

标签: loops procedure netezza

我正在使用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;

我知道这可以使用循环和退出样式循环来解决但是它让我知道为什么我不能做上述情况,因为文档表明它可以这样做。

任何人都知道为什么这不起作用或如何使它工作?

感谢。 克兰西。

1 个答案:

答案 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;

希望这会有所帮助。