When I write
DECLARE @x INT
Is there a way to check whether the variable @x has already been declared or not?
No.
The declaration of variables in tsql does not follow the code path and use scope like perhaps other languages does.
This code shows that @xx
exists but is unassigned even though the declaration was never executed.
if 1 = 0
begin
declare @xx int = 10
end
else
begin
declare @yy int = 20
end
print coalesce(@xx, -100)
print coalesce(@yy, -200)
Result
-100
20