2010-03-19 3 views
3

저장 프로 시저 결과 집합에서 테이블 정의를 만드는 방법을 알고있는 사람이 있습니까?SQL Server 저장 프로 시저 결과 집합의 테이블 정의

30 개 이상의 열이있는 결과 집합을 생성하는 저장 프로 시저가 있습니다. 수동으로 모든 테이블 열을 만들지 않고도이 테이블에 넣고 싶습니다.

열 이름과 유형을 덤프 할 내장 프로 시저가 있습니까?

감사합니다.

+0

잘 모르겠습니다. 왜 그러고 싶니? – CResults

+0

수동으로 테이블을 만드는 것을 피하기 위해, 나는 정말로 시간을 절약하려고 노력하고 있습니다 ... 저장 프로 시저에서 반환 된 열이 정확히 일치하지 않는 'INSERT EXEC'를 사용하여 과거에 문제가있었습니다 테이블의. 이러한 프로 시저가 많은 열을 반환 할 때 정말 고통 스러울 수 있습니다. – SuperBrook

답변

0

당신은하지만 돈 그것을 할 "수"

그런 다음 이동 및 SQL Server Management Studio에서 YourNewTable보고 결과 집합의 열을보고, 또는 테이블 메타 데이터 쿼리와 같은 수 있습니다 내가 권하고 싶습니다 경우 t 알고 : 저장 프로 시저에

EXEC sp_configure 'Show Advanced Options', 1 
GO 
RECONFIGURE 
GO 
EXEC sp_configure 'Ad Hoc Distributed Queries', 1 
GO 
RECONFIGURE 
GO 

SELECT 
    * 
INTO 
    #table 
FROM 
    OPENROWSET(
    'SQLNCLI', 
    'SERVER=.;Trusted_Connection=yes', 
    'EXEC StoredProcedureName' 
) 
0

한 번만 해보는 것이 좋습니다 (프로덕션에서는 사용하지 않음).

나는 보통 하위 프로 시저로 이동하여 결과 집합을 반환하는 쿼리에서 INTO YourNewTable을 열 선택 목록과 FROM 사이에 추가합니다. 하위 프로 시저를 한 번 실행 한 다음 변경 내용을 제거하십시오. '

SELECT 
    * 
    FROM INFORMATION_SCHEMA.Columns 
    WHERE TABLE_NAME='YourNewTable' 
    ORDER BY ORDINAL_POSITION 
0

, 당신과 함께 "INTO 선택"을 수행해야 할 것 "WHERE 1 = 0"그냥 빈 테이블을 생성하므로. 이 데이터 유형 정의하려면

', yourcolumn ( ISNULL 123 : 변환 또는 당신이 NOT NULL 제약 조건을 원하는 경우 해당 데이터 유형

로 열을 던져, 당신은 선택에 사용해야합니다 ')를 yourcolumn으로 지정한 다음 where 절에 넣으십시오. <>'123 '