Как использовать GO в среде SQL Server Management Studio и Transact SQL?

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

8 ответов


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


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


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

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

дополнительные сведения см. В разделе http://msdn.microsoft.com/en-us/library/ms188037.aspx.


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

Use herDatabase
GO ; 

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


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

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


вот магия GO.

SELECT 'Go'
Go 10

синтаксис : Go INT (BatchNumber)

BatchNumber: ни разу не произошло

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