SELECT @local_variable (Transact-SQL)
DECLARE @local_variable を使用して作成された指定のローカル変数が、指定された式に設定されるようにします。
変数を割り当てるには、SELECT @local_variable ではなく、SET @local_variable を使用することをお勧めします。詳細については、「SET @local_variable」を参照してください。
構文
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