BEGIN...END (Transact-SQL)
適用於:sql Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Platform System (PDW) SQL 分析端點在 Microsoft Fabric SQL 資料庫中Microsoft網狀架構倉儲中的 SQL 分析端點Microsoft網狀架構
封入一系列的 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;