2016-03-08 70 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