Поделиться через


Примеры пакетных заданий

Эти примеры — сценарии, которые используют редактор кода среды MicrosoftSQL Server Management Studio и команду GO программы sqlcmd, чтобы задать границы пакетов.

В следующем примере создается представление. Так как инструкция CREATE VIEW должна быть единственной в пакете, требуются команды GO, чтобы изолировать инструкцию CREATE VIEW от предшествующей и последующей инструкций USE и SELECT.

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

В следующем примере показано, как несколько пакетов сочетаются в одной транзакции. Инструкции BEGIN TRANSACTION и COMMIT разделяют границы транзакций. Инструкции BEGIN TRANSACTION, USE, CREATE TABLE, SELECT и COMMIT находятся каждая в собственном пакете, состоящем из одной инструкции. Все инструкции INSERT включены в один пакет.

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

Следующий сценарий иллюстрирует две проблемы. Во-первых, переменная @MyVar объявлена во втором пакете, а вызывается в третьем. К тому же, во втором пакете есть начало комментария, но нет конца. В третьем пакете содержится конец комментария, но когда программа sqlcmd считывает команду GO, она отправляет первый пакет MicrosoftSQL Server 2005, где комбинация символов «/*» без соответствующей ей комбинации «*/» порождает синтаксическую ошибку.

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

См. также

Основные понятия