2010-03-19 69 views
3

是任何人都知道的一種方式來創建從存儲過程結果的表定義設置?SQL Server表定義設置

我有產生與超過30列的結果集的存儲過程,我想進入一個桌子,而無需手動創建所有表列。

有一個內置的過程,將傾出列名和類型..?

謝謝。

+0

這並不是說我知道。你爲什麼想要? – CResults 2010-03-19 14:19:19

+0

爲了避免必須手動創建表格,我只是想節省一些時間......過去我使用'INSERT EXEC'存儲過程中返回的列不完全匹配的表格。當這些程序返回那麼多列時,這可能是一個真正的痛苦。 – SuperBrook 2010-03-19 14:22:25

回答

0

你「能」做,但我不知道如果我推薦它:

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

如果這是一次性的事情,你可以試試這個(不生產!)。

我通常只是轉到子過程,並在返回結果集的查詢上,在列選擇列表和FROM之間添加INTO YourNewTable。運行子進程1次,然後刪除更改。

然後,您可以去在SQL Server Management Studio中尋找YourNewTable看看結果集列,或任何表的元數據查詢,如:

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

在您的存儲過程,你將需要與執行「SELECT INTO」一個「WHERE 1 = 0」,所以它只是創建一個空表。

如果你想定義的數據類型: 轉換或投你列到該數據類型

如果你想有一個NOT NULL約束,則必須在選擇使用: ISNULL(yourcolumn,'123 「)作爲yourcolumn,然後在where子句中放哪裏yourcolumn <>‘123’