现在的位置: 首页 > 数据库 > 正文

SQLServer变量赋值的方法有哪些

2020年05月20日 数据库 ⁄ 共 1199字 ⁄ 字号 评论关闭

  SQLServer中对已经定义的SQLServer变量赋值的方式用两种,分别是SET和SELECT。下面学步园小编来讲解下SQLServer变量赋值的方法有哪些?

  SQLServer变量赋值的方法有哪些

  对于这两种SQLServer变量赋值方式的区别,SQLServer联机丛书中已经有详细的说明,但很多时候我们并没有注意,其实这两种方式还是有很多差别的。

  SQLServer推荐使用SET而不是SELECT对变量进行赋值。当表达式返回一个值并对一个变量进行赋值时,推荐使用SET方法。

  下面以具体示例来说明问题:

  createtablechinadba1(

  useridint,

  addrvarchar(128)

  )

  go

  insertintochinadba1(userid,addr)values(1,'addr1')

  insertintochinadba1(userid,addr)values(2,'addr2')

  insertintochinadba1(userid,addr)values(3,'addr3')

  go

  表达式返回多个值时,使用SET赋值

  declare@addrvarchar(128)

  set@addr=(selectaddrfromchinadba1)

  /*

  --出错信息为

  SQLServer变量赋值的方法有哪些

  服务器:消息512,级别16,状态1,行2

  子查询返回的值多于一个。当子查询跟随在=、!=、<、<=、>、>=之后,或子查询用作表达式时,这种情况是不允许的。

  */

  go

  表达式返回多个值时,使用SELECT赋值declare@addrvarchar(128)

  select@addr=addrfromchinadba1

  print@addr--结果集中最后一个addr列的值

  --结果:addr3

  go

  表达式未返回值时,使用SET赋值declare@addrvarchar(128)

  set@addr='初始值'

  set@addr=(selectaddrfromchinadba1whereuserid=4)

  print@addr--null值

  go

  表达式未返回值时,使用SELECT赋值declare@addrvarchar(128)

  set@addr='初始值'

  select@addr=addrfromchinadba1whereuserid=4

  print@addr--保持原值

  go

  需要注意的是,SELECT也可以将标量子查询的值赋给变量,假如标量子查询不返回值,则变量被置为null值。

  此时与使用SET赋值是完全相同的。

  以上就是关于“SQLServer变量赋值的方法有哪些”的内容,希望对大家有用。更多资讯请关注学步园。学步园,您学习IT技术的优质平台!

抱歉!评论已关闭.