SELECT @local_variable (Transact-SQL)
DECLARE **@**local_variable を使用して作成される指定のローカル変数が、指定された式に設定されるように指定します。
変数を割り当てるには、SELECT **@**local_variable ではなく、SET **@**local_variable を使用することをお勧めします。詳細については、「SET @local\_variable」を参照してください。
構文
SELECT { @local_variable = expression } [ ,...n ] [ ; ]
引数
**@**local_variable
値を割り当てる宣言された変数です。
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 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)