테이블 변수

Windows/MSSQL 2008. 10. 30. 14:34

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 사용은 불가합니다.

Posted by 아로스

아로스

달력