2015-10-19 96 views
0

我創建了一個存儲過程,要求用戶指定多個參數。下面的腳本返回正確的結果:將帶有多個參數的存儲過程的結果插入臨時表

Execute dbo.Stored_Procedure_Name 
      @Ord1 = 1, @Ord2 = 4, @Ord3 = 5, @Ord4 = 6, @Ord5 = 7, 
      @Table_Name = 'Random_Table_Name' 

現在我需要做的就是把結果放到一個臨時表的結果集是一個大的查詢的基礎是建立以關閉一個臨時表的運行。我已經在網上找到了很多關於如何執行此操作的示例(包括OPENROWSET),但無法找到利用需要多個參數的存儲過程的內容。其他示例假定用戶知道列標題,並且可以在運行腳本之前創建一個表,但我不這樣做。

任何你可能提供的指導將不勝感激!

謝謝!

+0

當你說你必須把結果放在一個臨時表中,你的意思是你需要把它放在一個表中第6個參數的名字?你能澄清嗎? – CDC

+1

順便說一句,Erland Sommarskog在本文中涵蓋了這個問題空間。也許這些解決方案之一就是你正在尋找的。 http://www.sommarskog.se/share_data.html – CDC

+0

對您有幫助嗎? –

回答

0

沒有真正的好方法將存儲過程調用的結果存入臨時表。我會將存儲過程轉換爲表值函數並返回結果集(但如果您不知道預先返回的表的結構,則這不起作用),或者只是讓存儲過程創建臨時表本身並讓您的查詢只引用您的存儲過程創建的臨時表。例如:

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

-- call your SP that will make the temp table #Your_Temp_Table 
exec dbo.your_sp 

-- use the temp table in the rest of your query 
select * from #Your_Temp_Table 
相關問題