共用方式為


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
    這是將指派值的宣告變數。

  • =
    將右邊的值指派給左邊的變數。

  • {= | += | -= | *= | /= | %= | &= | ^= | |= }
    複合指派運算子:

    += 加入並指派

    -= 減去並指派

    *= 乘以並指派

    /= 除以並指派

    %= 模除並指派

    &= 位元 AND 並指派

    ^= 位元 XOR 並指派

    |= 位元 OR 並指派

  • expression
    這是任何有效的運算式。 其中包括純量子查詢。

備註

SELECT @local\_variable 通常用來將單一值傳回給變數。 不過,當 expression 是資料行名稱時,它可以傳回多個值。 如果 SELECT 陳述式傳回多個值,就會將最後傳回的值指派給變數。

如果 SELECT 陳述式未傳回任何資料列,變數會保留它目前的值。 如果 expression 是未傳回任何值的純量子查詢,變數會設為 NULL。

一個 SELECT 陳述式可以初始化多個本機變數。

[!附註]

您不能也利用包含變數指派的 SELECT 陳述式來執行一般結果集擷取作業。

範例

A.利用 SELECT @local\_variable 來傳回單一值

在下列範例中,@var1 變數指派了 Generic Name 來作為值。 針對 Store 資料表的查詢不會傳回任何資料列,因為資料表中並沒有指定給 CustomerID 的值。 變數會保留 Generic Name 值。

USE AdventureWorks2012 ;       
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 AdventureWorks2012 ; 
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)