没有合适的资源?快使用搜索试试~ 我知道了~
SQLserver中的declare变量用法
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
7 下载量 73 浏览量
2020-12-14
06:35:45
上传
评论
收藏 52KB PDF 举报
温馨提示
试读
2页
SQL中的declare用法 平时写SQL查询、存储过程都是凭着感觉来,没有探究过SQL的具体语法,一直都是按c#那一套往SQL上模仿,前几天项目中碰到一个问题引起了我对declare定义变量的作用域的兴趣。 大家都知道c#中的局部变量,在if中如果我们定义一个变量的话他的作用到if结束为止,if外是不识别这个变量的,else里都不能使用,简单的写一下。 if(true) { Int32i=1; Console.WriteLine(i); } 这个i的作用域就是if里面,如果我们在if外面用这个变量 if(true) { Int32i=1; Console.WriteLine(i); }
资源推荐
资源详情
资源评论
SQLserver中的中的declare变量用法变量用法
SQL中的中的declare用法用法
平时写SQL查询、存储过程都是凭着感觉来,没有探究过SQL的具体语法,一直都是按c#那一套往SQL上模仿,前几天项目
中碰到一个问题引起了我对declare定义变量的作用域的兴趣。
大家都知道c#中的局部变量,在if中如果我们定义一个变量的话他的作用到if结束为止,if外是不识别这个变量的,else里都不
能使用,简单的写一下。
if(true)
{
Int32i=1;
Console.WriteLine(i);
}
这个i的作用域就是if里面,如果我们在if外面用这个变量
if(true)
{
Int32i=1;
Console.WriteLine(i);
}
Console.WriteLine(i);
那第二条输出语句会报错
The name ‘i’ does not exist in the current context
说明已经出了i的作用域了。
那么我们要是在sql写这么一段代码会是什么情况呢?首先写在if内
IF1=1
BEGIN
DECLARE@testVARCHAR
SET@test='1'
PRINT'inif:'+@test
END
运行看结果输出in if:1这是可以预想的结果。那我们在if外面使用变量@test试试。
IF1=1
BEGIN
DECLARE@testVARCHAR
SET@test='1'
PRINT'inif:'+@test
END
PRINT'outif:'+@test
这样会是什么结果呢,不知道大家怎么想的,以我的大脑顺势就想到这应该报错啊,出了变量的作用域了。实际结果不仅没报
错而且@test的值还在。
in if:1
out if:1
看见这个结果当时我很郁闷,SQL太出人意料了。
在SQL SERVER 2005的帮助文档里关于declare的帮助里发现这么一句话,备注的第三行“局部变量的作用域是其被声明时所
在批处理”
Msdn的地址:http://msdn.microsoft.com/zh-cn/library/ms188927.aspx
这行字在这么一大篇中还真挺不引人瞩目。
现在我们知道原来declare变量的作用域是所在的批处理,if阻断不了它的作用域,那上面我们的代码if内外的代码都在一个批
处理中,所以@test都是可用的且if里面设置的值还在。
下面我改造一下代码,SQL中是以GO语句来区分批处理的
资源评论
weixin_38591615
- 粉丝: 8
- 资源: 908
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功