Подтвердить что ты не робот

Какое значение GO-инструкции в TSQL

Я новичок в TSQL и задаюсь вопросом, что означает оператор GO. Для меня это просто кажется брошенным там, где когда-либо это кажется подходящим.

Я предполагаю, что он каким-то образом сообщает серверу sql запустить предыдущий оператор? Что произойдет, если вы их вообще не используете? Может ли кто-нибудь привести пример, когда оператор сломается, если я не использую GO.

Просьба уточнить.

4b9b3361

Ответ 1

Это терминатор партии

это сломает

declare @i int
set @i =5

declare @i int
set @i =6

Select @i

Msg 134, уровень 15, состояние 1, строка 5 Имя переменной '@i' уже объявлено. Имена переменных должны быть уникальными в рамках пакета запросов или хранимой процедуры.

это будет работать

declare @i int
set @i =5

go
declare @i int
set @i =6

Select @i

Ответ 2

Он заканчивает партию.

Это редко требуется и используется гораздо чаще, чем должно быть. Одно действующее место - в сохраненном программировании proc, где вы сначала проверяете, существует ли proc, и отбрасывает его, если это не так. Затем вы используете инструкцию go, чтобы завершить партию, потому что оператор create proc должен быть первым выражением партии.

Ответ 3

Кстати. На самом деле это не TSQL-команда. Он просто используется средствами Microsoft DB для разделения двух партий команд.

Фактически вы можете настроить его как другое слово в SSMS, если вы хотите в настройках предпочтений "Параметры...".

Основное место разграничения важно, так это то, что SQL задушит оператор GO, если вы попытаетесь использовать их в запросах через соединение с базой данных из кода, например через ADO.NET.