BEGIN...END (Transact-SQL)

適用対象: はいSQL Server (サポートされているすべてのバージョン) はいAzure SQL データベース はいAzure SQL Managed Instance はいAzure Synapse Analytics はいParallel Data Warehouse

Transact-SQL ステートメントのグループを実行できるように、一連の Transact-SQL ステートメントを囲みます。 BEGIN と END はフロー制御言語のキーワードです。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

BEGIN  
    { sql_statement | statement_block }   
END  

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

{ sql_statement | statement_block }
有効な 1 つの Transact-SQL ステートメント、またはステートメント ブロックで定義したステートメントのグループを指定します。

注釈

BEGIN...END ブロックは入れ子にできます。

BEGIN...END ブロック内ではすべての Transact-SQL ステートメントが有効ですが、同じバッチまたはステートメント ブロック内で一緒にグループ化できない Transact-SQL ステートメントもあります。

次の例では、BEGINEND を使用して、まとめて実行する一連の Transact-SQL ステートメントを定義します。 BEGIN...END ブロックが指定されていない場合、両方の ROLLBACK TRANSACTION ステートメントが実行され、両方の PRINT メッセージが返されます。

USE AdventureWorks2012
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  
/*  
Rolled back the transaction.  
*/  

例: Azure Synapse Analytics、Analytics Platform System (PDW)

次の例では、BEGINEND を使用して、まとめて実行する一連の SQL ステートメントを定義します。 BEGIN...END ブロックが含まれていない場合、次の例は連続するループになります。

-- Uses AdventureWorks  

DECLARE @Iteration Integer = 0;
WHILE @Iteration <10  
BEGIN  
    SELECT FirstName, MiddleName   
    FROM dbo.DimCustomer WHERE LastName = 'Adams';
    SET @Iteration += 1  ;
END;

関連項目

ALTER TRIGGER (Transact-SQL)
フロー制御言語 (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
END (BEGIN...END) (Transact-SQL)