Реальная функция оператора "GO" в SQL? - PullRequest
2 голосов
/ 10 мая 2019

Я слышал, что оператор GO разделяет пакеты команд в SQL. И транзакция CREATE должна быть единственным запросом в пакете.

Но когда я попробую:

Create database dbTest
Create table tbSomething(ID int primary key,Name varchar(30))
GO

Выход по-прежнему УСПЕХ.

Итак, как оператор GO влияет на пакеты SQL?

Ответы [ 2 ]

9 голосов
/ 10 мая 2019

GO используется для разделения сценария на несколько пакетов.

Слово GO не является оператором sql.Это понимается пакетным процессором SQL (например, SSMS), а не SQL Server.

Проще говоря, если GO появляется в отдельной строке, SSMS отправляет каждый раздел с разделителями.GO отдельной партией.SQL Server никогда не видит строки GO, только SQL между ними.

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

1 голос
/ 10 мая 2019

Оператор 'GO' на сервере SQL просто посылает сигнал для принятия текущего пакета операторов SQL для выполнения.

Проще говоря, он работает как разделитель.

Это указание на конец оператора SQL [т.е. 1 пакет, который должен быть выполнен].

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