2014-02-19 187 views
0

我正在使用netezza中的存储过程。 我想遍历一系列的值。 循环上限作为变量传递给用户。FOR循环Netezza问题

即EXECUTE SPROC(12);

所以问题在于Netezza(aginity workbench)不会接受这个输入变量作为循环的上限。

DECLARE 
x alias as $1. 
begin 
    for i in 1..x loop 
    ...do stufff... 
    end loop; 
end; 

我知道,这可以通过使用循环和退出风格环路来解决,但它吃了我,为什么我不能做上面给出的资料表明,这是可以做到所以。

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

谢谢。 克兰西。

回答

1

请找工作示例如下 -

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; 

希望这会有所帮助。

+0

谢谢Varun。这样可行。奇怪的是,官方文件没有建议使用括号。 – clancy