2014-02-19 226 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