Partager via


Exemples de lots d'instructions

Ces exemples sont des scripts qui utilisent l'éditeur de code de Microsoft SQL Server Management Studio et la commande GO de l'utilitaire sqlcmd pour définir les limites d'un lot.

L'exemple suivant crée une vue. Puisque l'instruction CREATE VIEW doit être l'unique instruction d'un lot, les instructions GO doivent l'isoler des instructions USE et SELECT qui l'entourent.

USE AdventureWorks;
GO 
CREATE VIEW dbo.vProduct
AS
SELECT ProductNumber, Name
FROM Production.Product;
GO 
SELECT * 
FROM dbo.vProduct;
GO 

L'exemple suivant représente plusieurs lots combinés en une même transaction. Les instructions BEGIN TRANSACTION et COMMIT délimitent la transaction. Les instructions BEGIN TRANSACTION, USE, CREATE TABLE, SELECT et COMMIT figurent dans leur propre lot (comprenant chacun une instruction unique). Toutes les instructions INSERT sont incluses dans un seul lot.

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

Le script ci-dessous illustre deux problèmes. En premier lieu, la variable @MyVar est déclarée dans le second lot mais est référencée dans le troisième. Ensuite, le deuxième lot comporte le début d'un commentaire mais pas la fin. Si le troisième lot contient bien la fin du commentaire, lorsque sqlcmd lit la commande GO, il envoie le premier lot à Microsoft SQL Server 2005, dans lequel le commentaire */ with no matching /* génère une erreur de syntaxe.

USE AdventureWorks;
GO
DECLARE @MyVar INT
/* Start of the split comment.
GO
End of the split comment. */
SELECT @MyVar = 29;
GO