2017-10-12 43 views
0

我正在使用SQL Server 2012,我需要通過執行帶有動態參數值的存儲過程將結果存儲到臨時表中。通過在SQL中使用帶有動態參數的OPENROWSET存儲過程來將結果獲取到temptable中?

下面我顯示我的代碼,雖然我執行的代碼,我得到一個錯誤,所以這可能得到輸出動態參數,而執行存儲過程在openrowset或類似的東西?

SET @sql = N'SELECT * INTO #TempStamp_Status  
      FROM OPENROWSET(''SQLNCLI'', 
     ''Admin-SERVER\SQLEXPRESS'' ; ''sa'' ; ''123456'' 
     ''SET NOCOUNT ON;SET FMTONLY OFF;exec 
RDS_DS.dbo.Qry_GetParticipationDetails ' + cast(@ResidentId AS 
NVARCHAR(10)) + ',''' +CAST(@StartDate AS NVARCHAR(100)) +''',''' 
+CAST(@EndDate AS NVARCHAR(100)) +''')'''; 

當我執行這個SQL查詢,我得到這個錯誤:

Msg 102, Level 15, State 1, Line 5
Incorrect syntax near 'SET NOCOUNT ON;SET FMTONLY OFF;exec RDS_DS.dbo.Qry_GetParticipationDetails 52,'

在此先感謝

回答

2

缺少引號。你可以試試嗎?

SET @sql = N'SELECT * INTO #TempStamp_Status  
      FROM OPENROWSET(''SQLNCLI'', 
     ''Admin-SERVER\SQLEXPRESS'' ; ''sa'' ; ''123456'', 
     ''SET NOCOUNT ON;SET FMTONLY OFF;exec 
RDS_DS.dbo.Qry_GetParticipationDetails ' + cast(@ResidentId AS 
NVARCHAR(10)) + ',''''' +CAST(@StartDate AS NVARCHAR(100)) +''''',''''' 
+CAST(@EndDate AS NVARCHAR(100)) +''''''')'; 
+0

嗨,這個答案執行全成,但我怎樣讓這個不是Temptable結果,我想SELECT * FROM#TempStamp_Status,但我得到「消息208,級別16,狀態0,第23行 無效的對象名稱#TempStamp_Status'。」 – Shankar

+0

您可以像使用'SELECT * INTO TempStamp_Status'一樣使用真實表格而不是臨時表格,或者您可以使用像'## TempStamp_Status'這樣的全局臨時表格 –

+0

感謝您的幫助,您的答案正在成功運行 – Shankar

相關問題