BEGIN...END (Transact-SQL)
適用於:Microsoft Fabric 中 Microsoft Fabric倉儲中的 SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse AnalyticsAnalytics Platform System (PDW)SQL 分析端點
含括一系列的 Transact-SQL 陳述式,以便執行一組 Transact-SQL 陳述式。 BEGIN 和 END 是流程控制語言關鍵字。
Syntax
BEGIN
{ sql_statement | statement_block }
END
注意
若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔。
引數
{ sql_statement | statement_block }
這是利用陳述式區塊來定義的任何有效 Transact-SQL 陳述式或陳述式分組。
備註
BEGIN...END 區塊可以有巢狀結構。
雖然 BEGIN...END 區塊中所有的 Transact-SQL 陳述式都是有效的,但某些 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)
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應