Что такое использование GO в SQL Server Management Studio и Transact SQL?

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

Ответ 1

Это терминатор партии, однако вы можете изменить его на все, что хотите. alt text

Ответ 2

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

INSERT INTO mytable DEFAULT VALUES
GO 10

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

Ответ 3

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

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

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

Ответ 4

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

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

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

Ответ 5

Чтобы добавить к существующим ответам, когда вы создаете представления, вы должны разделить эти команды на партии с помощью go, иначе вы получите сообщение об ошибке 'CREATE VIEW' must be the only statement in the batch. Так, например, вы не сможете выполнить следующий sql script без 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

Use herDatabase
GO ; 

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

Ответ 7

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 server в другом пакете. Итак, как мы видим, он разделил партии.

Ответ 8

Вот волшебство GO.

SELECT 'Go'
Go 10

СИНТАКСИС: Перейти INT (BatchNumber)

BatchNumber: Не было времени.

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