2012-03-13 2 views
29

테이블 변수 란 무엇입니까? 기존 Stored 프로 시저 결과 집합과 일치하는 열이있는 테이블 변수 (가상 메모리 내 테이블)를 만드는 방법.SQL 서버 2008 R2에서 테이블 변수 생성

프로 시저를 실행하고 실행 한 후 열 이름이 저에게 알려졌습니다. 하지만 저장 프로 시저에서와 동일한 열의 데이터 형식을 선언해야합니까?

편집 : 나는이

DECLARE @Table TABLE( 
name varchar(30) NOT NULL, 
location varchar(30) NOT NULL 
); 

INSERT @Table 
SELECT name, location FROM 
Exec SPROC @param , @param 
+6

경고 단어 : 테이블 변수가 메모리에 있다고 보장 할 수 없습니다. 그것은 신화입니다. – JohnFx

+0

질문에 답변 할 수 있도록 지금까지 가지고있는 코드를 포함시킬 수 있습니까? – JohnFx

+0

@JohnFx 테이블 변수 생성을위한 코드를 실행하지 않았습니다. 나는 저장 프로 시저를 만들었고 실행 한 후에는 열 이름을 얻었으므로 이제 해당 열 이름을 테이블 변수에 저장하고 싶습니다. 그리고 항상 메모리에없는 경우 어떻게 내 데이터베이스에서 찾을 수 있습니다, 죄송합니다, SQL에 대한 새로운 오전. 도와주세요. – Pankaj

답변

29

@tableName 테이블 변수가 실행 스크립트의 기간 동안 살아 시도에만 즉, 그들은 단지 세션 수준 개체입니다.

이 문제를 테스트하려면 SQL Server Management Studio에서 두 개의 쿼리 편집기 창을 열고 동일한 이름이지만 구조가 다른 테이블 변수를 만듭니다. 아이디어를 얻을 것입니다. 따라서 @tableName 개체는 일시적이며 Google의 내부 데이터 처리에 사용되며 실제 데이터베이스 구조에는 기여하지 않습니다.

임시 사용을 위해 만들 수있는 또 다른 유형의 테이블 개체가 있습니다.

Create table #test (Id int, Name varchar(50)) 

이 테이블 오브젝트가 작성 및 임시 데이터베이스에 저장됩니다 : 그들은 물리적 테이블에 대한 유사한 생성 문처럼 선언 #tableName 객체이다. 첫 번째 것과는 달리이 객체는 더 유용하며 큰 데이터를 저장할 수 있고 트랜잭션 등에서 참여할 수 있습니다. 이러한 테이블은 연결이 열려있을 때까지 살아 있습니다. 생성 된 객체를 다시 생성하기 전에 스크립트를 따라 생성 된 객체를 삭제해야합니다.

IF OBJECT_ID('tempdb..#test') IS NOT NULL 
    DROP TABLE #test 

희망적이라고 생각하세요!

+1

마지막으로이 부분을 완료했습니다. :) – Pankaj