WHILE(Snowflake Scripting)¶
WHILE 루프는 지정된 조건이 true인 동안 반복됩니다.
루프에 대한 자세한 내용은 루프 작업하기 섹션을 참조하십시오.
참고
이 Snowflake Scripting 구문은 Snowflake Scripting 블록 내에서만 유효합니다.
구문¶
WHILE ( <condition> ) { DO | LOOP }
    <statement>;
    [ <statement>; ... ]
END { WHILE | LOOP } [ <label> ] ;
여기서:
사용법 노트¶
- WHILE에서 조건을 괄호로 묶습니다. 예:- WHILE ( <조건> ).
- condition이 FALSE 로 평가되지 않고 루프에 BREAK(Snowflake Scripting) 명령(또는 이와 동등한 명령)이 포함되어 있지 않은 경우 루프가 실행되어 크레딧을 무한정 소비합니다.
- condition이 NULL이면 FALSE로 처리됩니다.
- 루프는 여러 문을 포함할 수 있습니다. 이러한 문을 포함하는 BEGIN … END 블록 을 사용할 수 있지만, 반드시 사용해야 하는 것은 아닙니다. 
- DO키워드를- END WHILE과 페어링하고,- LOOP키워드를- END LOOP와 페어링합니다. 예:- WHILE (...) DO ... END WHILE; WHILE (...) LOOP ... END LOOP; 
예¶
이 예에서는 루프를 사용하여 2의 거듭제곱을 계산합니다. counter 변수는 루프 카운터입니다. power_of_2 변수는 가장 최근에 계산된 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;
$$
;
저장 프로시저를 호출합니다.
CALL power_of_2();
+------------+
| POWER_OF_2 |
|------------|
|        256 |
+------------+
이 예제에서는 루프와 DATEADD 함수를 사용하여 조건이 충족될 때까지 날짜에 하루를 추가합니다.
EXECUTE IMMEDIATE $$
BEGIN
  LET mydate := '2024-05-08';
  WHILE (mydate < '2024-05-20') DO
    mydate := DATEADD(day, 1, mydate);
  END WHILE;
  RETURN mydate;
END;
$$
;
+-------------------------+
| anonymous block         |
|-------------------------|
| 2024-05-20 00:00:00.000 |
+-------------------------+
더 많은 예는 WHILE 루프 섹션을 참조하십시오.