Какое значение GO-инструкции в TSQL
Я новичок в TSQL и задаюсь вопросом, что означает оператор GO
. Для меня это просто кажется брошенным там, где когда-либо это кажется подходящим.
Я предполагаю, что он каким-то образом сообщает серверу sql запустить предыдущий оператор? Что произойдет, если вы их вообще не используете? Может ли кто-нибудь привести пример, когда оператор сломается, если я не использую GO
.
Просьба уточнить.
Ответы
Ответ 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.