SQL programming 
테이블 변수 (Table Variable)

일반적으로 DECLARE로 선언되는 변수는 정수나 문자열등의 단일 데이타를 저장한다. 만약 여러 데이타를 묶어 하나의 변수로 나타낼 경우, 테이블 변수를 사용할 수 있다. 특히, 테이블의 데이타를 임시 메모리에 저장하고 싶을 때, 테이블 변수를 자주 사용한다. 아래 예제는 집계용 테이블 변수를 선언하고 여기에 데이타를 추가한 후, 출력해 보이는 예이다.

예제






테이블 변수 제약점

테이블 변수는 DECLARE로 선언된 다른 로컬 변수들과 같이 해당 배치(Batch) 혹은 저장 프로시져내로 Scope가 제한된다.<br> - 해당 배치를 벗어나거나 프로시져가 끝나면 사용할 수 없게 되며, 입출력 파라미터로 전달될 수도 없다.<br> - Dynamic SQL문 안에 테이블변수를 사용하고 이를 EXECUTE로 실행한다면 이는 현재 배치와 별도의 Context를 가지므로 테이블 변수를 인식할 수 없다.<br> 테이블 변수의 제약점들을 극복하기 위해 흔히 임시테이블 (Temporary Table)이나 Table Type (SQL 2008 이상) 등을 사용할 수 있다. 아래 첫번째 부분은 임시테이블을 사용하여 해당 세션안에서 계속 임시 테이블이 유지되는 시나리오에 사용할 수 있는 예제를 보여준다. 두번째 부분은 테이블 타입을 정의하고 이 타입의 로컬변수(@tab)을 지정한 후, 이를 sp_executesql 의 3번째 파라미터로 테이블 타입 변수를 전달하는 예를 보여준다. SQL 2008부터 테이블 타입 변수를 파라미터로 전달될 수 있는데, 읽기 전용이므로 SELECT를 사용할 때만 유용하다.

예제





본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.