Есть ли способ проверить, была ли уже объявлена переменная @x?
Ответ 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
Ответ 2
ЕСЛИ вы пытаетесь получить доступ к переменной, которая еще не определена, T-SQL Script даст вам сообщение об ошибке, указав, что переменная не определена.
Msg 137, уровень 15, состояние 2, строка 5 Должен объявить скалярную переменную "@x".