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은 일반적으로 변수에 하나의 값을 반환하는 데 사용됩니다. 그러나 expression이 열의 이름인 경우 여러 값을 반환할 수 있습니다. SELECT 문에서 둘 이상의 값을 반환하면 반환된 값 중 마지막 값이 변수에 할당됩니다.
SELECT 문에서 행을 반환하지 않으면 변수는 현재 값을 그대로 유지합니다. expression이 값을 반환하지 않는 스칼라 하위 쿼리일 경우에는 변수가 NULL로 설정됩니다.
하나의 SELECT 문으로 여러 개의 지역 변수를 초기화할 수 있습니다.
[!참고]
변수 할당이 포함된 SELECT 문을 일반 결과 집합 검색 작업을 수행하는 데 사용할 수는 없습니다.
예
1. SELECT @local_variable을 사용하여 단일 값 반환
다음 예에서는 @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
2. 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