Объем переменной - это диапазон операторов Transact-SQL, которые могут ссылку на переменную. Объем переменная длится с той точки, в которой она находится объявляется до конца партии или хранимая процедура, в которой она находится объявлено.
Ответ 2
gbn ответил на вопрос, но в соответствующей заметке обратите внимание на такой код:
DECLARE @i INT = 0
WHILE @i < 2
BEGIN
DECLARE @a VARCHAR(100)
IF @i = 0
SET @a = 'changed'
PRINT COALESCE(@a, 'is null')
SET @i = @i + 1
END
При запуске дважды печатается "изменено" , в то время как многие люди, вероятно, ожидают, что он напечатает "изменено" , затем "равно null". Будьте осторожны при объявлении переменных внутри циклов. Возможно, вы захотите явно указать значение NULL в объявлении. например.
DECLARE @a VARCHAR(100) = NULL
Когда эта модифицированная версия запущена, она отображает "изменено" , затем "равно null".