SQL Server变量赋值的方法

数据库 SQL Server
SQL Server数据库中SET和SELECT都可以对已经定义的变量赋值,其中荐使用SET而不是SELECT对变量进行赋值,当表达式返回一个值并对一个变量进行赋值时,推荐使用SET方法。

SQL Server变量赋值我们经常会遇到,下面就为您介绍SQL Server变量赋值的两种方法,希望可以对您学习SQL Server变量赋值有所帮助。

SQL Server中对已经定义的SQL Server变量赋值的方式用两种,分别是SET和SELECT。

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

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

下面以具体示例来说明问题:
create table chinadba1(
userid int ,
addr varchar(128) 
)
go
insert into chinadba1(userid,addr) values(1,'addr1')
insert into chinadba1(userid,addr) values(2,'addr2')
insert into chinadba1(userid,addr) values(3,'addr3')
go

表达式返回多个值时,使用SET赋值 
declare @addr varchar(128)
set @addr = (select addr from chinadba1)
/*
--出错信息为
服务器: 消息 512,级别 16,状态 1,行 2
子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
*/
go
表达式返回多个值时,使用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
需要注意的是,SELECT 也可以将标量子查询的值赋给变量,如果标量子查询不返回值,则变量被置为 null 值。
此时与使用SET赋值是完全相同的。

 

 

【编辑推荐】

Java调用Sql Server存储过程

使用SQL Server视图的优缺点

SQL Server排序规则的应用

带您了解SQL Server标识列

SQL Server UPDATE语句的用法

责任编辑:段燃 来源: 互联网
相关推荐

2010-11-26 15:18:10

mysql变量赋值

2010-11-12 10:31:25

SQL Server游

2010-11-12 10:46:16

SQL Server变

2010-11-12 10:38:24

SQL Server自

2010-09-10 10:23:57

SQL变量赋值

2010-11-10 15:36:44

SQL Server存

2010-11-12 10:53:41

sql server表

2010-07-01 16:58:43

SQL Server

2010-07-21 17:07:42

SQL Server

2010-10-19 14:11:20

SQL SERVER恢

2010-11-10 15:23:55

SQL SERVER

2010-07-22 16:02:29

2010-11-12 10:08:55

SQL Server全

2010-09-14 15:34:29

sql server死

2011-04-02 17:08:44

SQL Server死锁

2010-11-09 17:02:43

SQL Server死

2010-09-13 14:35:58

sql server端

2010-09-16 15:10:48

SQL Server表

2011-03-29 13:22:07

SQL Server临时表表变量

2010-07-26 14:02:50

SQL Server临
点赞
收藏

51CTO技术栈公众号