SELECT @local_variable (Transact-SQL)
指定使用 DECLARE **@**local_variable 创建的指定局部变量应设置为指定表达式。
要分配变量,建议使用 SET **@**local_variable,而不使用 SELECT **@**local_variable。有关详细信息,请参阅 SET @local\_variable。
语法
SELECT { @local_variable = expression } [ ,...n ] [ ; ]
参数
**@**local_variable
要为其赋值的声明变量。
expression
任何有效的表达式。此参数包含一个标量子查询。
备注
SELECT @local_variable 通常用于将单个值返回到变量中。但是,如果 expression 是列的名称,则可返回多个值。如果 SELECT 语句返回多个值,则将返回的最后一个值赋给变量。
如果 SELECT 语句没有返回行,变量将保留当前值。如果 expression 是不返回值的标量子查询,则将变量设为 NULL。
一个 SELECT 语句可以初始化多个局部变量。
注意: |
---|
包含变量赋值的 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)