为什么我的查询忘记了我的变量声明?

时间:2014-04-17 20:53:03

标签: sql-server sql-server-2012

我想在查询的顶部声明一个变量,以方便使用。之后,我会在其他一些命令运行后使用它。这就是我本能地写的:

Declare @DoThatThing varchar(1)
Set @DoThatThing='Y'

BlahBlahBlah (Updates, Inserts, Selects, etc. A few Go commands too)

if @DoThatThing='Y' begin
    Do More Stuff
end

但是在if @DoThatThing='Y' begin行上,我收到错误必须声明标量变量" @ DoThatThing" 。其他一些说明:

  1. 变量中没有拼写错误。
  2. 我没有看到任何其他错误。我可以注释掉这部分查询,它运行正常。
  3. 如果我将声明声明紧接在if声明之上,那么它运行正常。这让我怀疑我的其他一个命令是以某种方式清除变量的内存。
  4. 有谁知道为什么我的代码无法正常运行?

1 个答案:

答案 0 :(得分:2)

如果您的脚本也有"一些GO命令"在其中,然后您在每次GO之后开始批处理。您的变量声明仅对当前批次有效。