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