次の方法で共有


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

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

expression

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

解説

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

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

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

ms187330.note(ja-jp,SQL.90).gifメモ :
変数の割り当てを含む 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)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手