SELECT @local_variable (Transact-SQL)

指定使用 DECLARE **@**local_variable 创建的指定局部变量应设置为指定表达式。

要分配变量,建议使用 SET **@**local_variable,而不使用 SELECT **@**local_variable。有关详细信息,请参阅 SET @local\_variable

主题链接图标Transact-SQL 语法约定

语法

SELECT { @local_variable = expression } [ ,...n ] [ ; ]

参数

**@**local_variable

要为其赋值的声明变量。

expression

任何有效的表达式。此参数包含一个标量子查询。

备注

SELECT @local_variable 通常用于将单个值返回到变量中。但是,如果 expression 是列的名称,则可返回多个值。如果 SELECT 语句返回多个值,则将返回的最后一个值赋给变量。

如果 SELECT 语句没有返回行,变量将保留当前值。如果 expression 是不返回值的标量子查询,则将变量设为 NULL。

一个 SELECT 语句可以初始化多个局部变量。

ms187330.note(zh-cn,SQL.90).gif注意:
包含变量赋值的 SELECT 语句不能也用于执行通常的结果集检索操作。

示例

A. 使用 SELECT @local\_variable 返回单个值

在以下示例中,为变量 @var1 赋值 Generic Name。由于 Store 表中不存在为 CustomerID 指定的值,因此对该表的查询不返回任何行。变量的值仍为 Generic Name

USE AdventureWorks ;       
GO       
DECLARE @var1 nvarchar(30);       
SELECT @var1 = 'Generic Name';       
SELECT @var1 = Name       
FROM Sales.Store       
WHERE CustomerID = 1000 ;      
SELECT @var1 AS 'Company Name';

下面是结果集: 

Company Name                  
------------------------------
Generic Name                  

B. 使用 SELECT @local\_variable 以便在无结果集时返回 Null

在以下示例中,使用了一个子查询为 @var1 赋值。由于为 CustomerID 请求的值不存在,因此子查询不返回值,并将变量设为 NULL

USE AdventureWorks ; 
GO 
DECLARE @var1 nvarchar(30) 
SELECT @var1 = 'Generic Name' 
SELECT @var1 = (SELECT Name 
FROM Sales.Store 
WHERE CustomerID = 1000) 
SELECT @var1 AS 'Company Name' ;

下面是结果集: 

Company Name
----------------------------
NULL

请参阅

参考

DECLARE @local\_variable (Transact-SQL)
表达式(Transact-SQL)
SELECT (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助