GO (Transact-SQL)

Информирует программы SQL Server об окончании пакета инструкций Transact-SQL.

Значок ссылки на разделСоглашения о синтаксисе в Transact-SQL

Синтаксис

GO [count]

Аргументы

  • count
    Целое положительное число. Пакет, предшествующий команде GO, выполняется заданное количество раз.

Замечания

GO — это не инструкция Transact-SQL, это команда, распознаваемая программами sqlcmd и osql и редактором кода среды SQL Server Management Studio.

Программы SQL Server интерпретируют команду GO как сигнал о том, что им следует отправить текущий пакет инструкций Transact-SQL экземпляру SQL Server. Текущий пакет инструкций состоит из всех инструкций, введенных за время, прошедшее с момента обработки последней команды GO, или, если данная команда GO является первой, с момента начала нерегламентированного сеанса или сценария.

Инструкция Transact-SQL не может располагаться на той же строке, что и команда GO. Тем не менее строка с командой GO может содержать комментарии.

При использовании команды GO нужно соблюдать требования, предъявляемые к пакетам. Например, при любом вызове хранимой процедуры после первой инструкции пакета нужно использовать ключевое слово EXECUTE. Область видимости локальных (пользовательских) переменных ограничена пакетом, и к ним нельзя обращаться после команды GO.

USE AdventureWorks;
GO
DECLARE @MyMsg VARCHAR(50)
SELECT @MyMsg = 'Hello, World.'
GO -- @MyMsg is not valid after this GO ends the batch.

-- Yields an error because @MyMsg not declared in this batch.
PRINT @MyMsg
GO

SELECT @@VERSION;
-- Yields an error: Must be EXEC sp_who if not first statement in 
-- batch.
sp_who
GO

Приложения SQL Server могут отправлять экземпляру SQL Server множественные инструкции Transact-SQL, чтобы они были выполнены как пакет. Инструкции пакета компилируются в единый план выполнения. Программисты, выполняющие в программах SQL Server нерегламентированные инструкции или составляющие из инструкций Transact-SQL сценарии для программ SQL Server, используют команду GO как сигнал об окончании пакета.

Приложения, основанные на API-интерфейсах ODBC или OLE DB, при попытке выполнить команду GO получают уведомление о синтаксической ошибке. Программы SQL Server никогда не отправляют команду GO серверу.

Разрешения

Для выполнения команды GO не требуются какие-либо разрешения. Она может быть выполнена любым пользователем.

Примеры

В следующем примере создаются два пакета. Первый содержит только инструкцию USE``AdventureWorks, которая задает контекст базы данных. Остальные инструкции выполняют те или иные операции над локальной переменной и должны быть сгруппированы в один пакет. Поэтому следующая команда GO указывается только после последней инструкции, в которой используется переменная.

USE AdventureWorks;
GO
DECLARE @NmbrContacts int
SELECT @NmbrContacts = COUNT(*)
FROM Person.Contact
PRINT 'The number of contacts as of ' +
      CAST(GETDATE() AS char(20)) + ' is ' +
      CAST(@NmbrContacts AS char (10))
GO

См. также

Другие ресурсы

Пакеты

Справка и поддержка

Получение помощи по SQL Server 2005