2016-03-08 95 views
0

從EXEC結果返回的未知列數。INSERT INTO變量列數

INSERT INTO #FullTempClr ([Id], [Value1],[Value2], ..., [Value11]) 
EXEC [report].[TestReport] @Id 

Howerver,有時TestReport返回Id和10值,有時Id和11,有時Id和1的值。如果只有Valu1可用,我們需要將null或0放入其他值中。在這個級別上可以這樣做,或者唯一的方法是修改[report] .TestReport?

SQL Server 2008 R2的

+5

你應該將該邏輯添加到您的存儲過程,以便它總是返回相同數量的列 – Lamak

+0

我同意拉馬克這個邏輯應該在存儲過程中照顧。 – jkdba

+0

[Exec存儲過程複製到動態臨時表中](http://stackoverflow.com/questions/20280111/exec-stored-procedure-into-dynamic-temp-table) – Ralph

回答

0

我認爲最好的辦法是封裝所有邏輯到存儲過程中,也可以使用這樣的事情:

SP_CONFIGURE 'show advanced options',1 
GO 
RECONFIGURE 
GO 
SP_CONFIGURE 'Ad Hoc Distributed Queries',1 
GO 
SELECT * INTO #TempTable 
FROM OPENROWSET 
('SQLNCLI','Server=YourLocalServer;Trusted_Connection=yes;', 
    'EXEC YourStoredProcedure') 
GO 
SELECT * FROM #TempTable 
GO 
DROP TABLE #TempTable 

你也可以看看在這個職位Stored Procedure with dynamic result into temp table