您的位置:首页 > 博客中心 > 数据库 >

SQL中的declare用法

时间:2022-03-15 10:19

 

这个i的作用域就是if里面,如果我们在if外面用这个变量

 

 

            if (true)
            {
                Int32 i = 1;
                Console.WriteLine(i);
            }
            Console.WriteLine(i);

 

那第二条输出语句会报错

The name ‘i‘ does not exist in the current context

说明已经出了i的作用域了。

 in if:1

 out if:1

看见这个结果当时我很郁闷,SQL太出人意料了。

在SQL SERVER 2005的帮助文档里关于declare的帮助里发现这么一句话,备注的第三行“局部变量的作用域是其被声明时所在批处理”

Msdn的地址:

这行字在这么一大篇中还真挺不引人瞩目。

现在我们知道原来declare变量的作用域是所在的批处理,if阻断不了它的作用域,那上面我们的代码if内外的代码都在一个批处理中,所以@test都是可用的且if里面设置的值还在。

下面我改造一下代码,SQL中是以GO语句来区分批处理的

 

IF 1=1
BEGIN
   DECLARE @test VARCHAR
   SET @test=‘1‘   
   PRINT ‘in if:‘+@test
END
GO
PRINT ‘out if:‘+@test

 

 

这下对了,检查语法后SQL报错“必须声明标量变量"@test"”

SQL中的declare用法,布布扣,bubuko.com

热门排行

今日推荐

热门手游