mssql sql server set、select关键字的区别详解


摘要:
下文主要讲述在sql脚本中 set select赋值关键字的用法及区别


在sql脚本编写中,需要对sql变量进行赋值操作,此时我们必须采用set 或select关键字来对变量进行操作,
下文将讲述两者的用法及区别:

1:set 、select关键字的用法

declare @a varchar(100)
set @a =’maomao365.com’
——————————-
declare @b varchar(100)
select @b=info from tableName where …

2:set 、select关键字的区别

2.1 set 关键字每次只能对一个变量进行赋值操作,而select 一次可对多个关键字进行赋值操作,如下所示:

declare @a varchar(20),@b varchar(20)
select @a='a',@b='b'  ----select 关键字可一次对两个变量进行赋值
----------------------
set @a ='a'    ----set 关键字需要运行两次才可完成两个变量的赋值
set @b ='b'


当我们在存储过程事务编写时,如果需获取系统变量 @@error @@rowcount 时候
如果我们采用两次set赋值就会导致第二条set获取的数值存在问题,此时我们只能使用
select 同时对两个系统变量获取相关值

2.2 当使用set 对一张table获取值时,如果获取的记录存在多行,则会返回相应的错误信息,
当使用set 对一张table获取值时,如果获取的记录存在多行,则会返回最后一条符合条件的记录给变量


2.3 当使用set 对一张table获取值时,如果获取的记录不存在时,则此变量会变为null,
当使用set 对一张table获取值时,如果获取的记录不存在时,则变量会保持为赋值前的值
2.4 如果采用子查询模式赋值,
当值不存在时,set select 都会被赋值null