如何检查是否已声明变量(T-SQL)?

Dmi*_*rii 16 t-sql

当我写作

DECLARE @x INT
Run Code Online (Sandbox Code Playgroud)

有没有办法检查变量@x是否已经声明?

Mik*_*son 15


的变量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)
Run Code Online (Sandbox Code Playgroud)

结果

-100
20
Run Code Online (Sandbox Code Playgroud)

  • 只是因为其他人也在寻找一种方法来做这个尝试和捕获块也不会工作.如果你想检查变量是否存在,那么如果不存在则声明它. (2认同)

Sha*_*der 0

如果您尝试访问尚未定义的变量,T-SQL 脚本将给出错误消息,告诉您该变量尚未定义。

消息 137,级别 15,状态 2,第 5 行 必须声明标量变量“@x”。