Ответ 1
Нет.
Объявление переменных в tsql не соответствует пути кода и использует область видимости, как, например, другие языки.
Этот код показывает, что @xx
существует, но не назначен, хотя объявление никогда не выполнялось.
if 1 = 0
begin
declare @xx int = 10
end
else
begin
declare @yy int = 20
end
print coalesce(@xx, -100)
print coalesce(@yy, -200)
Результат
-100
20