Exemplos de lote
Esses exemplos são scripts que usam o editor de códigos MicrosoftSQL Server Management Studio e o comando GO do utilitário sqlcmd para definir os limites do lote.
O exemplo a seguir cria uma visualização. Em razão do CREATE VIEW ser a única instrução em um lote, os comandos GO são necessários para isolar a instrução CREATE VIEW das instruções USE e SELECT ao redor dela.
USE AdventureWorks;
GO
CREATE VIEW dbo.vProduct
AS
SELECT ProductNumber, Name
FROM Production.Product;
GO
SELECT *
FROM dbo.vProduct;
GO
O exemplo seguinte mostra vários lotes combinados em uma transação. As instruções BEGIN TRANSACTION e COMMIT delimitam os limites da transação. As instruções BEGIN TRANSACTION, USE, CREATE TABLE, SELECT e COMMIT estão todas em seus próprios lotes de única instrução. Todas as instruções INSERT estão inclusas em um lote.
BEGIN TRANSACTION
GO
USE AdventureWorks;
GO
CREATE TABLE dbo.mycompanies
(
id_num int IDENTITY(100, 5),
company_name nvarchar(100)
)
GO
INSERT mycompanies (company_name)
VALUES (N'A Bike Store');
INSERT mycompanies (company_name)
VALUES (N'Progressive Sports');
INSERT mycompanies (company_name)
VALUES (N'Modular Cycle Systems');
INSERT mycompanies (company_name)
VALUES (N'Advanced Bike Components');
INSERT mycompanies (company_name)
VALUES (N'Metropolitan Sports Supply');
INSERT mycompanies (company_name)
VALUES (N'Aerobic Exercise Company');
INSERT mycompanies (company_name)
VALUES (N'Associated Bikes');
INSERT mycompanies (company_name)
VALUES (N'Exemplary Cycles');
GO
SELECT id_num, company_name
FROM dbo.mycompanies
ORDER BY company_name ASC;
GO
COMMIT;
GO
O script seguinte ilustra dois problemas. Primeiro, a variável @ MyVar é declarada no segundo lote e referenciada no terceiro. Além disso, o segundo lote tem o início de um comentário, mas nenhum término. O terceiro lote tem o término de um comentário, mas quando o sqlcmd lê o comando GO ele envia o primeiro lote para o MicrosoftSQL Server 2005 onde o/* sem associação */ gera um erro de sintaxe.
USE AdventureWorks;
GO
DECLARE @MyVar INT
/* Start of the split comment.
GO
End of the split comment. */
SELECT @MyVar = 29;
GO