2014-02-19 3 views
0

Netezza에서 저장 프로 시저를 사용하고 있습니다. 범위의 값을 반복하고 싶습니다. 루프의 상한값은 사용자가 sproc에 변수로 전달합니다.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; 

즉, 그러나 그것은 내가 문서가 할 수 있다고 제안 주어진 위를 할 수없는 이유에 나를 먹고 그래서.

왜이 기능이 작동하지 않거나 작동시키는 지 누구나 알고 계십니까?

감사합니다. Clancy.

답변

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