你试下就知道了.请看下面测试语句: use pubs go declare @s1 varchar(10),@s2 varchar(10) set @s1=10 set @s2=10 select @s1=au_lname from authors where 1=2 set @s2=(select au_lname from authors where 1=2) select @s1,@s2
use pubs go declare @s1 varchar(10),@s2 varchar(10) set @s1=10 set @s2=10 select @s1=au_lname from authors where 1=2 set @s2=(select au_lname from authors where 1=2) select @s1 as 'select',@s2 as 'set' /* select set ---------- ---------- 10 NULL(所影响的行数为 1 行) */
use pubs
go
declare @s1 varchar(10),@s2 varchar(10)
set @s1=10
set @s2=10
select @s1=au_lname from authors where 1=2
set @s2=(select au_lname from authors where 1=2)
select @s1,@s2
go
declare @s1 varchar(10),@s2 varchar(10)
set @s1=10
set @s2=10
select @s1=au_lname from authors where 1=2
set @s2=(select au_lname from authors where 1=2)
select @s1 as 'select',@s2 as 'set'
/*
select set
---------- ----------
10 NULL(所影响的行数为 1 行)
*/
select 可以实现 set的赋值功能;
在用select 进行赋值操作时,会产生系统输出,而set则不会产生输出,因此在SQL2000 中建议不要使用select进行赋值而用set进行赋值.
不过我没有看到官方的说法