SELECT @local_variable (Transact-SQL)

DECLARE @local_variable を使用して作成された指定のローカル変数が、指定された式に設定されるようにします。

変数を割り当てるには、SELECT @local_variable ではなく、SET @local_variable を使用することをお勧めします。詳細については、「SET @local_variable」を参照してください。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

SELECT { @local_variable { = | += | -= | *= | /= | %= | &= | ^= | |= } expression } [ ,...n ] [ ; ]

引数

  • @local_variable
    値を割り当てる宣言された変数です。

  • =
    右側の値を左側の変数に代入します。

  • {= | += | -= | *= | /= | %= | &= | ^= | |= }
    複合代入演算子です。

    += 加算して代入

    -= 減算して代入

    *= 乗算して代入

    /= 除算して代入

    %= 剰余して代入

    &= ビットごとの AND 演算を行って代入

    ^= ビットごとの XOR 演算を行って代入

    |= ビットごとの OR 演算を行って代入

  • expression
    任意の有効なです。これには、スカラー サブクエリが含まれます。

説明

SELECT @local_variable は、通常、変数に 1 つの値を返すときに使用します。ただし、expression が列名の場合は、複数の値を返すことができます。SELECT ステートメントが複数の値を返した場合は、最後に返された値が変数に割り当てられます。

SELECT ステートメントが行を返さない場合、変数は現在の値を保ちます。expression が値を返さないスカラー サブクエリの場合、変数は NULL に設定されます。

1 つの SELECT ステートメントで複数のローカル変数を初期化できます。

注意

変数の割り当てを含む SELECT ステートメントを、同時に通常の結果セットの取得に使用することはできません。

A. SELECT @local_variable を使用して 1 つの値を返す

次の例では、変数 @var1 には、その値として Generic Name が割り当てられています。CustomerID に指定した値は Store テーブル内に存在しないため、このテーブルに対するクエリは行を返しません。変数は Generic Name のままです。

USE AdventureWorks2008R2 ;       
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 AdventureWorks2008R2 ; 
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