BEGIN … END(Snowflake Scripting)

BEGINEND 는 Snowflake Scripting 블록을 정의합니다.

블록에 대한 자세한 내용은 Snowflake Scripting의 블록 이해하기 섹션을 참조하십시오.

구문

BEGIN
    <statement>;
    [ <statement>; ... ]
[ EXCEPTION <exception_handler> ]
END;
Copy

여기서:

statement

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

  • 단일 SQL 문(CALL 포함).

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

  • 중첩 블록.

exception_handler

예외가 처리되는 방법을 지정합니다. 예외 처리하기EXCEPTION(Snowflake Scripting) 섹션을 참조하십시오.

사용법 노트

  • END 키워드는 바로 뒤에 세미콜론이 와야 합니다. 또는 바로 뒤에 레이블이 오고 그 바로 뒤에 세미콜론이 와야 합니다.

  • BEGIN 키워드는 바로 뒤에 세미콜론이 오면 됩니다.

  • BEGINEND 는 일반적으로 루핑 또는 분기 구조와 같은 다른 언어 구문 내부 또는 저장 프로시저 내부에서 사용됩니다. 하지만 이것이 필수적인 것은 아닙니다. BEGIN/END 블록은 익명 블록 내부의 최상위 구문일 수 있습니다.

  • 블록은 중첩될 수 있습니다.

이것은 BEGINEND 를 사용하여 관련 문을 그룹화하는 간단한 예입니다. 이 예에서는 두 개의 관련 테이블을 만듭니다.

EXECUTE IMMEDIATE $$
BEGIN
    CREATE TABLE parent (ID INTEGER);
    CREATE TABLE child (ID INTEGER, parent_ID INTEGER);
    RETURN 'Completed';
END;
$$
;
Copy

다음 예도 비슷합니다. 문은 블록으로 그룹화되며 해당 블록 내의 트랜잭션 내부에도 있습니다.

EXECUTE IMMEDIATE $$
BEGIN
    BEGIN TRANSACTION;
    TRUNCATE TABLE child;
    TRUNCATE TABLE parent;
    COMMIT;
    RETURN '';
END;
$$
;
Copy

이 예에서 문은 분기 구문 내부에 있습니다.

IF (both_rows_are_valid) THEN
    BEGIN
        BEGIN TRANSACTION;
        INSERT INTO parent ...;
        INSERT INTO child ...;
        COMMIT;
    END;
END IF;
Copy