2014-10-08 66 views
0

我有一個返回4個結果集的存儲過程。結果集有很多列。從存儲過程的第n個結果集創建表

從每個結果集中創建表的最佳方法是什麼?表中的數據類型和模式應該與結果集中的數據類型和模式相同。

我知道我能做到這一點,以創建一個選擇表:

CREATE TABLE TABLE_NAME 
    AS SELECT * FROM USERS 

那麼,有沒有辦法選擇一個存儲過程執行的結果集?

+0

我不知道回答你的問題是什麼(這就是爲什麼我要評論),但這是我收藏了很長時間[可以幫助。](http://stackoverflow.com/questions/209383/select-columns-from-result-set-of-stored-procedure) – AdamMc331 2014-10-08 17:18:36

+1

你不能做一個'select into'嗎?如果你只是從sproc中取回表對象,你可能會做一個'select * into @ newtable from @ returnedsproctable' – paqogomez 2014-10-08 17:22:16

+0

我應該提到我知道旁邊沒有t-sql。我不知道如何從sproc中選擇單個結果集。 – 2014-10-08 17:23:59

回答

1

雖然這主要是在聊天中進行的,但對於其他可能想知道同樣事情的人來說,它仍應該有一個答案。

訪問多個結果集中的特定結果集並在T-SQL的上下文中訪問特定結果集的唯一方法是通過SQLCLR。使用C#,VB.Net或任何.Net語言,您可以使用可以分別訪問結果集的SqlDataReader

的SQLCLR PROC將簡單地執行的是現有的T-SQL proc和可以吐出一個結果集(假設輸入PARAM將指定要返回的結果集的哪一個)可以做一個單獨的連接和直接調用INSERT語句來同時完成所有4個操作(儘管在這一點上它可能也是一個控制檯應用程序或Windows窗體或其他)。