SQL Server 中对已经定义的变量赋值的方式有两种,分别是 SET 和 SELECT。
当表达式返回一个值并对一个变量进行赋值时,推荐使用 SET 方法
下表列出 SET 与 SELECT 的区别。请特别注意红色部分。
set | select | |
同时对多个变量同时赋值 | 不支持 | 支持 |
表达式返回多个值时 | 出错 | 将返回的最后一个值赋给变量 |
表达式未返回值 | 变量被赋null值 | 变量保持原值 |
例如:
表达式返回多个值时,使用 SET赋值“报错”
表达式返回多个值时,使用 SELECT 赋值
declare @addr varchar(128) select @addr = addr from chinadba1 print @addr --结果集中最后一个 addr 列的值 --结果: addr3 go
表达式未返回值时,使用 SET 赋值
declare @addr varchar(128) set @addr = '初始值' set @addr = (select addr from chinadba1 where userid = 4 ) print @addr --null值 go
表达式未返回值时,使用 SELECT 赋值
declare @addr varchar(128) set @addr = '初始值' select @addr = addr from chinadba1 where userid = 4 print @addr --保持原值 go