2012-10-02 133 views
0

我創建了一個存儲過程以返回包含約60列的記錄。不過,我想在我的項目的另一部分中選擇相同的存儲過程中返回的60列中的40個。如何正確指定我需要返回哪些列?在本質上有什麼規則,如果任何的SQL Server插入。 。 。執行語句

插入#TempTable (。。。。。。) Exec的StoredProcedure的

回答

0

規則很簡單。 SP內的選擇必須具有與#Temptable一樣多的列,並且如果不是完全相同的類型,那麼列必須是兼容或可協調的,例如, int進入VARCHAR。

如果必須選擇60列中的40列,則必須通過2個臨時表,或使用涉及OPENQUERY之類的攻擊將SP調用視爲遠程數據集。

0

您可以使用許多輸出參數或一個輸出參數是NVARCHAR(MAX)。你可以初始化它想:

'SELECT '+ Col01.Value + ','+ Col02.Value + ',' ... + ',' + Col40.Value 

所以,你的存儲過程將返回類似:

'SELECT 10,50,''2012-10-02'',''Joro''' 

然後你就可以做到這一點:也

DECLARE @OUTPUT NVARCHAR(MAX)='SELECT 10,50,''2012-10-02'',''Joro''' 

EXEC sp_executesql @OUTPUT 

,在這裏檢查此解決方案:

Insert results of a stored procedure into a temporary table