2014-11-23 54 views
0

內我需要一些幫助如何從EXEC sp_executesql的獲取表@TempTable,存儲過程

我的目標:

我在其中可以正常使用存儲過程的@query。現在,我必須在同一存儲過程中執行@query執行的返回表上的更多操作。例如,我必須在返回的表中添加更多的列,並添加來自更多查詢的新數據。

我的問題:

我不能夠得到返回表格形式(EXEC sp_executesql)爲變量(@TempTable)。還有一個問題是返回的列數是未知的(動態的)。

步驟應該是這樣的:

  1. 聲明TempTable
  2. 不是Temptable = EXEC sq_executesql
  3. 添加新列TempTable
  4. 填寫更多數據

請指引我

+0

添加查詢的問題是 – 2014-11-23 06:48:41

+0

其實我要找的查詢做這個任務有點混亂。請檢查算法。 – user2496608 2014-11-23 06:54:41

回答

0

這可以使用全局臨時表像下面來實現:

DECLARE @sql NVARCHAR(1000) 
DECLARE @Column NVARCHAR(1000) 

SET @Column = 'YouColumnList' -- id,name etc. created by you dynamically. 

IF(Object_id('tempdb..##IntermediateTable') IS NOT NULL) 
    DROP TABLE ##IntermediateTable 

SET @sql = ' 
SELECT ' + @Column + ' 
Into ##IntermediateTable 
FROM YourTable 
WHERE id = 123 
' 

EXEC sp_executesql 
    @sql 

IF(Object_id('tempdb..#temptable') IS NOT NULL) 
    DROP TABLE #temptable 

SELECT * 
INTO #temptable 
FROM ##IntermediateTable 

IF(Object_id('tempdb..##IntermediateTable') IS NOT NULL) 
    DROP TABLE ##IntermediateTable 

SELECT * 
FROM #temptable --resulting temptable to use. alter it or do whatever desired. 
+0

感謝您的回覆@Deepak Pawar。此解決方案將用於添加新列,因此這是第3步。 也可以請引導我進行第2步,即關於在某些變量中獲取未知列的表,以便我們可以執行所需的操作? – user2496608 2014-11-23 09:27:26

+0

在步驟2中,我正在執行數據透視查詢 – user2496608 2014-11-23 09:28:20

+0

您能否詳細說明有問題的步驟2和3?添加一些你的代碼,直到現在,儘管它是錯誤的。這將幫助我們理解你真正想要的。 – 2014-11-23 16:19:23