WHILE(Snowflake Scripting)

WHILE 루프는 지정된 조건이 true인 동안 반복됩니다.

루프에 대한 자세한 내용은 루프 작업하기 섹션을 참조하십시오.

참고

Snowflake Scripting 구문은 Snowflake Scripting 블록 내에서만 유효합니다.

참고 항목

BREAK, CONTINUE

구문

WHILE ( <condition> ) { DO | LOOP }
    <statement>;
    [ <statement>; ... ]
END { WHILE | LOOP } [ <label> ] ;
Copy

여기서:

condition

BOOLEAN으로 평가되는 식입니다.

statement

문은 다음 중 하나일 수 있습니다.

  • 단일 SQL 문(CALL 포함).

  • 제어 흐름 문(예: 루핑 또는 분기 문).

  • 중첩 블록.

label

선택적 레이블입니다. 이러한 레이블은 BREAK 또는 CONTINUE 문의 이동 대상일 수 있습니다. 레이블은 오브젝트 식별자 의 명명 규칙을 따라야 합니다.

사용법 노트

  • WHILE 에서 조건을 괄호로 묶습니다. 예: WHILE ( <조건> ).

  • condition 이 FALSE로 평가되지 않고 루프에 BREAK(Snowflake Scripting) 명령(또는 이와 동등한 항목)이 포함되어 있지 않은 경우, 루프가 실행되고 크레딧을 무기한으로 소모합니다.

  • condition 이 NULL이면 FALSE로 처리됩니다.

  • 루프는 여러 문을 포함할 수 있습니다. 이러한 문을 포함하는 BEGIN … END 블록 을 사용할 수 있지만, 반드시 사용해야 하는 것은 아닙니다.

  • 키워드 DOEND WHILE 과 쌍을 이루고 키워드 LOOPEND LOOP 와 쌍을 이루어야 합니다. 예:

    while (...) do
        ...
    end while;
    
    while (...) loop
        ...
    end loop;
    
    Copy

이 예에서는 루프를 사용하여 2의 거듭제곱을 계산합니다. (이는 비효율적인 솔루션이지만, 루핑을 보여줍니다.)

CREATE PROCEDURE power_of_2()
RETURNS NUMBER(8, 0)
LANGUAGE SQL
AS
$$
DECLARE
    counter NUMBER(8, 0);      -- Loop counter.
    power_of_2 NUMBER(8, 0);   -- Stores the most recent power of 2 that we calculated.
BEGIN
    counter := 1;
    power_of_2 := 1;
    WHILE (counter <= 8) DO
        power_of_2 := power_of_2 * 2;
        counter := counter + 1;
    END WHILE;
    RETURN power_of_2;
END;
$$
;
Copy

다음은 저장 프로시저를 실행한 결과입니다.

CALL power_of_2();
+------------+
| POWER_OF_2 |
|------------|
|        256 |
+------------+
Copy