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 в объявлении. например,
DECLARE @a VARCHAR(100) = NULL
Когда эта измененная версия запущена, она отображает «изменено», а затем «равно нулю».