BEGIN...END (Transact-SQL)
Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric の SQL 分析エンドポイント Microsoft Fabric のウェアハウス
Transact-SQL ステートメントのグループを論理コード ブロックで実行できるように、一連の Transact-SQL ステートメントを囲みます。 BEGIN
と END
はフロー制御言語キーワードです。
構文
BEGIN
{ sql_statement | statement_block }
END
引数
{ sql_statement | statement_block}
ステートメント ブロックを使用して定義された、有効な Transact-SQL ステートメントまたはステートメント グループ化。
解説
BEGIN...END
ブロックは入れ子にすることができます。
すべての Transact-SQL ステートメントは BEGIN...END
ブロック内で有効ですが、特定の Transact-SQL ステートメントを同じバッチまたはステートメント ブロック内でグループ化しないでください。
例
次の例では、BEGIN
と END
を使用して、まとめて実行する一連の 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、Analytics Platform System (PDW)
次の例では、BEGIN
と END
を使用して、まとめて実行する一連の 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;