Overview
나중에 처리하기 위해 결과 집합을 저장할 수 있는 특별한 데이터 형식입니다.
table은 주로 테이블 값 함수의 결과 집합으로 반환되는 행 집합을 임시로 저장하는 데 사용됩니다.
자신이 선언된 프로시저나 함수 또는 일괄 처리 내로 지역 범위를 가집니다.
* 테이블 변수들을 저장 프로시저나 함수의 매개 변수로 사용 불가
* 테이블에 있는 컬럼도 TABLE 형식일 수 없음
Example
DECLARE @pricelist TABLE(tid varchar(6), price money)
INSERT @pricelist SELECT title_id, price FROM titles
SELECT * FROM @pricelist
Remarks
1. 테이블 변수의 정의는 일반 테이블 정의와 거의 비슷합니다.
단 CREATE 대신 DECLARE를 사용한다는 것과 테이블 변수의 이름이 TABLE 단어 앞에 나온다는 것이 다릅니다.
2. 테이블 변수의 정의는 다음 항목들을 포함할 수 있습니다.
- 각 칼럼들의 데이터 형식을 정의하고 NULL이나 NOT NULL 속성을 지정하는 칼럼 목록
- PRIMARY KEY, UNIQUE, CHECK, DEFAULT 제약 조건
3. 테이블 변수의 정의는 다음 항목들을 포함할 수 없다.
- 다른 테이블을 가리키는 외래키 참조
- 다른 테이블에서 FOREIGN KEY 제약 조건에 의해 참조되는 칼럼
4. 테이블 변수들은 자신들의 범위 내에서 다른 일반 테이블들처럼 취급될 수 있습니다.
모든 DML은 테이블 변수에 들어 있는 데이터에 수행될 수 있습니다.
단, 두가지 예외가 있습니다.
- 테이블 변수에 데이터를 추가하기 위해 SELECT INTO를 사용할 수 없음
EX) SELECT select_List INTO table_variables statements
- 저장 프로시저의 결과 집합을 직접 테이블 변수에 insert할 수 없음
EX) INSERT INTO table_variable EXEC stored_procedure
5. 추가적으로, 테이블 변수는 트랜잭션의 일부가 아니며, 테이블 변수에 인덱스를 만들기 위해
CREATE INDEX 사용은 불가합니다.