LOOP(Snowflake Scripting)

LOOP 루프는 반복 횟수나 종료 조건을 지정하지 않습니다. 사용자는 루프 내에서 BREAK 또는 RETURN 을 사용하여 명시적으로 루프를 종료해야 합니다.

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

참고

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

참고 항목

BREAK, CONTINUE, RETURN

구문

LOOP
    <statement>;
    [ <statement>; ... ]
END LOOP [ <label> ] ;
Copy

여기서:

statement

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

  • 단일 SQL 문(CALL 포함).

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

  • 중첩 블록.

label

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

사용법 노트

  • LOOPBREAK 또는 RETURN 이 실행될 때까지 반복됩니다. BREAK 또는 RETURN 명령은 거의 항상 조건식(예: IF 또는 CASE) 안에 있습니다.

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

이 루프는 예측 가능한 테스트 데이터를 테이블에 삽입합니다.

CREATE TABLE dummy_data (ID INTEGER);

CREATE PROCEDURE break_out_of_loop()
RETURNS INTEGER
LANGUAGE SQL
AS
$$
    DECLARE
        counter INTEGER;
    BEGIN
        counter := 0;
        LOOP
            counter := counter + 1;
            IF (counter > 5) THEN
                BREAK;
            END IF;
            INSERT INTO dummy_data (ID) VALUES (:counter);
        END LOOP;
        RETURN counter;
    END;
$$
;
Copy

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

CALL break_out_of_loop();
+-------------------+
| BREAK_OUT_OF_LOOP |
|-------------------|
|                 6 |
+-------------------+
Copy

저장 프로시저를 호출한 후 테이블의 내용은 다음과 같습니다.

SELECT *
    FROM dummy_data
    ORDER BY ID;
+----+
| ID |
|----|
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
+----+
Copy