亚马逊红移中的while循环

use*_*658 7 while-loop amazon-web-services amazon-redshift

我正在使用 sql server,我们确实有一个 while 循环,我在存储过程中创建了它。我正在评估 redshift 并在 redshift amazon 中寻找等效项。以下是我想要做的,我如何在亚马逊红移中做到这一点:

Declare
        @MaxId SmallInt,
        @CurrId SmallInt

Set @CurrId = 0

Set @MaxId = 10

While @CurrId <= @MaxId

    Select @CurrId

    set @CurrId = @CurrId + 1

end
Run Code Online (Sandbox Code Playgroud)

小智 5

在 Redshift 中测试了这一点:

create or replace procedure just_a_loop()
language plpgsql
as $$
declare
    CurrId INTEGER := 0;
    MaxId INTEGER := 10;
begin
    while CurrId <= MaxId
    LOOP
        raise info 'CurrId = %', CurrId;
        CurrId = CurrId + 1;
    end LOOP;
    raise info 'Loop Statement Executed -_-||^';
end;
$$;
Run Code Online (Sandbox Code Playgroud)

调用 just_a_loop();

INFO:  CurrId = 0
INFO:  CurrId = 1
INFO:  CurrId = 2
INFO:  CurrId = 3
INFO:  CurrId = 4
INFO:  CurrId = 5
INFO:  CurrId = 6
INFO:  CurrId = 7
INFO:  CurrId = 8
INFO:  CurrId = 9
INFO:  CurrId = 10
INFO:  Loop Statement Executed -_-||^
CALL
Run Code Online (Sandbox Code Playgroud)


mik*_*pdb 1

Redshift 中没有可用的过程语言。游标可用,但没有变量、存储过程或用户创建的函数。您将必须使用外部流程来完成您所要求的操作。

  • Amazon Redshift 现在从版本 1.0.7287(2019 年 4 月下旬)开始支持存储过程。请查看文档 [“在 Amazon Redshift 中创建存储过程”](https://docs.aws.amazon.com/redshift/latest/dg/stored-procedure-overview.html),了解有关存储过程入门的更多信息。 (4认同)