Какая польза от GO в SQL Server Management Studio и Transact SQL? - PullRequest
321 голосов
/ 19 февраля 2010

SQL Server Management Studio всегда вставляет команду GO, когда я создаю запрос, используя контекстное меню «Script As».Зачем?Что на самом деле делает GO?

Ответы [ 8 ]

280 голосов
/ 19 февраля 2010

Это пакетный терминатор, однако вы можете изменить его на любой другой alt text

270 голосов
/ 22 июня 2010

Начиная с Management Studio 2005 кажется, что вы можете использовать GO с параметром int, например:

INSERT INTO mytable DEFAULT VALUES
GO 10

Приведенное выше добавит 10 строк в mytable.Вообще говоря, GO будет выполнять соответствующие команды sql n раз.

178 голосов
/ 19 февраля 2010

Команда GO - это не инструкция Transact-SQL, а специальная команда, распознаваемая несколькими утилитами MS, включая редактор кода SQL Server Management Studio.

Команда GO используется для группировки команд SQL в пакеты, которые отправляются на сервер вместе. Команды, включенные в пакет, то есть набор команд со времени последней команды GO или начала сеанса, должны быть логически согласованы. Например, вы не можете определить переменную в одном пакете, а затем использовать ее в другом, поскольку область действия переменной ограничена пакетом, в котором она определена.

Для получения дополнительной информации см. http://msdn.microsoft.com/en-us/library/ms188037.aspx.

31 голосов
/ 19 февраля 2010

GO не является ключевым словом SQL.

Это разделитель пакетов, используемый клиентскими инструментами (например, SSMS) для разбиения всего сценария на пакеты

Ответил раньше несколько раз ... пример 1

13 голосов
/ 19 апреля 2017

Просто для добавления к существующим ответам, когда вы создаете представления, вы должны разделить эти команды на пакеты, используя go, в противном случае вы получите ошибку 'CREATE VIEW' must be the only statement in the batch. Так, например, вы не сможете выполнить следующий скрипт sql без go

create view MyView1 as
select Id,Name from table1
go
create view MyView2 as
select Id,Name from table1
go

select * from MyView1
select * from MyView2
6 голосов
/ 27 февраля 2010
Use herDatabase
GO ; 

Код говорит, что нужно выполнить инструкции над маркером GO.Моя база данных по умолчанию - myDatabase, поэтому вместо использования myDatabase GO выполняется текущий запрос для использования herDatabase

4 голосов
/ 01 июля 2018

Go означает, что любые операторы SQL, написанные перед ним и после любого более раннего GO, будут отправляться на SQL-сервер для обработки.

Select * from employees;
GO    -- GO 1

update employees set empID=21 where empCode=123;
GO    -- GO 2

В вышеприведенном примере операторы до GO 1 перейдут на sql severв пакете, а затем любые другие операторы перед GO 2 перейдут на сервер SQL в другой пакет.Итак, как мы видим, он разделил партии.

0 голосов
/ 25 февраля 2016

Вот магия GO.

SELECT 'Go'
Go 10

SYNTAX: Go INT (BatchNumber)

BatchNumber: Количество раз не произошло

Выглядит просто, это может привести к Спагетти , если вы будете кодировать глубже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...