Transact-SQL 参考

SELECT @local_variable

指定将(使用 DECLARE @local_variable 创建的)给定的局部变量设置为指定的表达式。

建议将 SET @local_variable 而不是 SELECT @local_variable 用于变量赋值。有关更多信息,请参见 SET @local_variable

语法

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

参数

@local_variable

是给其赋值的声明变量。

expression

是任何有效的 Microsoft® SQL Server™ 表达式,包括标量子查询。

注释

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

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

在第一个示例中,将变量 @var1 赋给 Generic Name 作为它的值。在 Customers 表中不存在为 CustomerID 指定的值,因此对该表的查询不返回行。该变量将保留 Generic Name 值。

USE Northwind
DECLARE @var1 nvarchar(30)
SELECT @var1 = 'Generic Name'

SELECT @var1 = CompanyName
FROM Customers
WHERE CustomerID = 'ALFKA'

SELECT @var1 AS 'Company Name'

结果如下:

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

在下例中,子查询用于给 @var1 赋值。为 CustomerID 请求的值不存在,因此子查询不返回值并将该变量设为 NULL。

USE Northwind
DECLARE @var1 nvarchar(30)
SELECT @var1 = 'Generic Name'

SELECT @var1 =
   (SELECT CompanyName
   FROM Customers
   WHERE CustomerID = 'ALFKA')

SELECT @var1 AS 'Company Name'

结果如下:

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

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

说明  也不能使用包含变量赋值的 SELECT 语句执行规范结果集检索操作。

请参见

DECLARE @local_variable

表达式

SELECT