BEGIN...END (Transact-SQL)
適用対象: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
Note
SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。
引数
{ sql_statement | statement_block }
有効な 1 つの 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
/*
Rolled back the transaction.
*/
例: Azure Synapse Analytics、Analytics Platform System (PDW)
次の例では、BEGIN
と END
を使用して、まとめて実行する一連の 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)
フィードバック
フィードバックの送信と表示