Share via


BEGIN...END(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System(PDW)Microsoft Fabric의 SQL 분석 엔드포인트Microsoft Fabric의 Warehouse

일련의 Transact-SQL 문을 묶어 Transact-SQL 문 그룹을 논리 코드 블록에서 실행할 수 있도록 합니다. BEGIN흐름 END 제어 언어 키워드(keyword).

Transact-SQL 구문 표기 규칙

Syntax

BEGIN
    { sql_statement | statement_block }
END

참고 항목

SQL Server 2014(12.x) 및 이전 버전에 대한 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조 하세요.

인수

{ sql_statement | statement_block}

문 블록을 사용하여 정의된 유효한 Transact-SQL 문 또는 문 그룹화입니다.

설명

BEGIN...END 블록을 중첩할 수 있습니다.

모든 Transact-SQL 문은 블록 내에서 BEGIN...END 유효하지만 특정 Transact-SQL 문은 동일한 일괄 처리 또는 문 블록 내에서 함께 그룹화해서는 안 됩니다.

예제

다음 예에서 BEGINEND는 함께 실행되는 일련의 Transact-SQL 문을 정의합니다. 블록이 BEGIN...END 포함되지 않으면 두 문이 모두 ROLLBACK TRANSACTION 실행되고 두 메시지가 모두 PRINT 반환됩니다.

USE AdventureWorks2022;
GO

BEGIN TRANSACTION
GO

IF @@TRANCOUNT = 0
BEGIN
    SELECT FirstName, MiddleName
    FROM Person.Person
    WHERE LastName = 'Adams';

    ROLLBACK TRANSACTION;

    PRINT N'Rolling back the transaction two times would cause an error.';
END;

ROLLBACK TRANSACTION;

PRINT N'Rolled back the transaction.';
GO

예: Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW)

다음 예에서 BEGINEND는 함께 실행되는 일련의 SQL 문을 정의합니다. 블록이 BEGIN...END 포함되지 않은 경우 다음 예제는 연속 루프에서 실행됩니다.

-- Uses AdventureWorksDW

DECLARE @Iteration INT = 0;

WHILE @Iteration < 10
BEGIN
    SELECT FirstName,
        MiddleName
    FROM dbo.DimCustomer
    WHERE LastName = 'Adams';

    SET @Iteration += 1;
END;