是任何人都知道的一種方式來創建從存儲過程結果的表定義設置?SQL Server表定義設置
我有產生與超過30列的結果集的存儲過程,我想進入一個桌子,而無需手動創建所有表列。
有一個內置的過程,將傾出列名和類型..?
謝謝。
是任何人都知道的一種方式來創建從存儲過程結果的表定義設置?SQL Server表定義設置
我有產生與超過30列的結果集的存儲過程,我想進入一個桌子,而無需手動創建所有表列。
有一個內置的過程,將傾出列名和類型..?
謝謝。
你「能」做,但我不知道如果我推薦它:
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'
)
如果這是一次性的事情,你可以試試這個(不生產!)。
我通常只是轉到子過程,並在返回結果集的查詢上,在列選擇列表和FROM
之間添加INTO YourNewTable
。運行子進程1次,然後刪除更改。
然後,您可以去在SQL Server Management Studio中尋找YourNewTable
看看結果集列,或任何表的元數據查詢,如:
SELECT
*
FROM INFORMATION_SCHEMA.Columns
WHERE TABLE_NAME='YourNewTable'
ORDER BY ORDINAL_POSITION
在您的存儲過程,你將需要與執行「SELECT INTO」一個「WHERE 1 = 0」,所以它只是創建一個空表。
如果你想定義的數據類型: 轉換或投你列到該數據類型
如果你想有一個NOT NULL約束,則必須在選擇使用: ISNULL(yourcolumn,'123 「)作爲yourcolumn,然後在where子句中放哪裏yourcolumn <>‘123’
這並不是說我知道。你爲什麼想要? – CResults 2010-03-19 14:19:19
爲了避免必須手動創建表格,我只是想節省一些時間......過去我使用'INSERT EXEC'存儲過程中返回的列不完全匹配的表格。當這些程序返回那麼多列時,這可能是一個真正的痛苦。 – SuperBrook 2010-03-19 14:22:25