BEGIN...END (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Управляемый экземпляр SQL Azure Конечная точка аналитики аналитики Synapse Analytics Analytics (PDW)SQL Analyticsв Microsoft FabricХранилище в Microsoft Fabric

Включает в себя последовательность инструкций Transact-SQL, позволяя выполнять группу инструкций Transact-SQL. Ключевые слова BEGIN и END относятся к языку потока управления.

Соглашения о синтаксисе Transact-SQL

Синтаксис

BEGIN  
    { sql_statement | statement_block }   
END  

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

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

Примеры: Azure Synapse Analytics и система платформы аналитики (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)