SQL Server Management Studio всегда вставляет команду GO, когда я создаю запрос, используя контекстное меню «Сценарий как» правой кнопкой мыши. Почему? Что на самом деле делает GO?
SQL Server Management Studio всегда вставляет команду GO, когда я создаю запрос, используя контекстное меню «Сценарий как» правой кнопкой мыши. Почему? Что на самом деле делает GO?
Ответы:
Это пакетный терминатор, однако вы можете изменить его на что угодно
Команда GO - это не инструкция Transact-SQL, а специальная команда, распознаваемая несколькими утилитами MS, включая редактор кода SQL Server Management Studio.
Команда GO используется для группировки команд SQL в пакеты, которые отправляются на сервер вместе. Команды, включенные в пакет, то есть набор команд со времени последней команды GO или начала сеанса, должны быть логически согласованы. Например, вы не можете определить переменную в одном пакете, а затем использовать ее в другом, поскольку область действия переменной ограничена пакетом, в котором она определена.
Для получения дополнительной информации см. Http://msdn.microsoft.com/en-us/library/ms188037.aspx .
GO
действительно полезно?
GO не является ключевым словом SQL.
Это разделитель пакетов, используемый клиентскими инструментами (такими как SSMS), чтобы разбить весь скрипт на пакеты
Ответили раньше несколько раз ... пример 1
Просто для добавления к существующим ответам, когда вы создаете представления, вы должны разделить эти команды на пакеты, используя 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
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 сервер в другом пакете. Итак, как мы видим, он разделил партии.
Здесь магия GO.
SELECT 'Go'
Go 10
Синтаксис: Go INT(BatchNumber)
Серийный номер: не произошло ни одного раза
Выглядит просто, это может привести вас к спагетти, если вы будете кодировать глубже.