【问题标题】:FOR loop Netezza issueFOR 循环 Netezza 问题
【发布时间】:2014-03-19 04:31:39
【问题描述】:

我正在使用 netezza 中的存储过程。 我想循环一系列值。 循环的上限由用户作为变量传递到存储过程中。

即执行 SPROC(12);

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

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

我知道这可以使用循环和退出样式循环来解决,但是考虑到文档表明可以这样做,为什么我不能执行上述操作,这让我很生气。

有人知道为什么这不起作用或如何使它起作用吗?

谢谢。 克兰西。

【问题讨论】:

    标签: loops procedure netezza


    【解决方案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;
    

    希望这会有所帮助。

    【讨论】:

    • 感谢瓦伦。这样可行。奇怪的是官方文档没有建议使用括号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 2020-09-15
    • 2011-01-26
    • 2017-11-15
    相关资源
    最近更新 更多