sql server 2008 中declare的 @用法_基本技能篇:SQL 的变量

上一篇讲到MSSQL的数据类型,今天简单说说变量的知识。

变量,是相对于常量而言的一个概念,字面的意思常量就是一个不变的值,如1,2,3,4,5,6...a,bc之类的,变量就是一个可变的值。

变量可分为局部变量和全局变量,局部变量需要预先定义,前面以一个@开头,常于declare联用,全局变量可以看作是系统变量,不用定义可以直接调用,前面以两个@开头。

ed28429560908ccd38cac30e23d844c3.png

以下展开来说一下:

(1)局部变量:定义方式 declare  @变量名  数据类型

如 declare  @i  int  就定义了一个整型变量@i  数据类型不理解的去翻下上一篇文章:基本技能篇:SQL 的数据类型

变量赋值:set  或 select

如 set @i =1  这个时候 @i 里的值就是1 了

还有 select @i= count(1) from   table A 类似这样的应用。

执行 select @i 则会展示@i 的值。

变量的使用:

a) 作为查询条件使用,当@i被定义并赋值后,可以放到where条件里使用

 如 select * from tableB where xh =@i ;

b) 作为判断条件使用,其实用法和常量类似,如:

if  @i >1

begin 

........

end 

c) 作为存储过程的入参使用,这里是固定语法,如:

create proc 存储过程名

@rq1   datetime,

@rq2   datetime 

as 

.......

上述三点涉及到一些查询、聚合函数、存储过程等,有不明白的可以先放下,后面会慢慢讲到。主要是要理解 局部变量的作用,下面用代码和执行结果对比,更加有助于理解:

代码段1 : 

DECLARE @i  INT    ----定义变量@i

SELECT  @i             -----先看下@i的值,此时没有赋值的情况下默认是null

SET  @i = 1         ----将@i 赋值为1 

SELECT @i         ----再次查看@i 的值

执行的结果:

027fe09a18f3f05c4638a73f671d6d7e.png

代码段2 :

DECLARE @i  INT    ----定义

SET  @i = 1             ----赋值

SET @i=@i+1        ----先自增1 ,再赋值回@i

SELECT @i             ---展示结果

效果如下  :

8c0145727b311dcb0de70be5b5baf914.png

通过这两个例子,应该对变量有个基本的理解了。需要说明一点的是,局部变量只是局部有效,比如在当前存储过程内或在当前进程内,离开当前的执行过程,局部变量就会被释放了。

(2)全局变量

全局变量实际上是获取数据库层面的一些参数,前面有两个@@,在平时使用过程中其实出现的频率不高,最常用的就两个:@@ERROR和@@ROWCOUNT 。

@@ERROR返回最后执行的sql是否报错,如果报错,这个变量就不为0 ,这边变量经常用来判断上一句是否执行成功。而@@ROWCOUNT则返回上一句执行所影响的行数,常用来判断INSERT 是否成功。

4e713f57b4dd70c99b9cd2ab8bb94ba5.png

其他的全局变量由于用的很少,本文不作过多阐述,有兴趣的可以自行网上查下,欢迎评论区讨论分享!

05c875756cffb250a42bdb9d7582c006.png

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值