2013-04-12 136 views
0

我有兩個存儲過程;我正在呼叫另一個存儲的proc。SQL Server存儲過程的命令成功地完成,但沒有結果集

我從第一個存儲過程返回表。當我單獨執行第一個時,我正確地得到了表格。

但是,當我從另一個調用存儲過程中的第一個存儲過程,它總是返回命令成功完成,沒有任何結果。

我這樣稱呼它在存儲的過程2:

set @query = 'exec servername.dbo.storedproc1 @ClassName = ''' + 
      @ClassName +''', @StatusName = ''' + @StatusName 
exec(@query) 
+0

所述第一存儲過程存儲在所述鏈接服務器都存在一個服務器,我需要當存在沒有鏈接服務器這是督促.I編輯,以從存儲在服務器中的第二存儲過程調用它我的上面也正確。 – Lav

+0

嘗試調用過程no像字符串,然後將結果集插入臨時表中。 –

+0

你能詳細解釋一下 – Lav

回答

0

首先創建捕獲從執行第一程序獲得的數據的臨時表。然後使用Select語句從臨時表中檢索所需的數據。不要忘記在Select語句之後使用刪除臨時表格,否則下次執行過程時將拋出錯誤,表示表格已經存在。另一方面,您可以使用表變量來避免丟棄表,因爲表變量的作用域被限制爲包含存儲過程的生命週期。 '

Insert into @temptable 
Exec sprcdre1 

Select * from @temptable 
+0

我在第一個存儲過程的臨時表已經這就是爲什麼我說,它返回一個表,但我不能這樣從它那簡單slect,因爲我需要讓服務器ID和數據庫,其中其通過獲取一些PARAMS存儲在第一從asp.net – Lav

+0

確保IAM已經開始嘗試這種其相同的答案@matan yungman以上建議 – Lav

+0

Don.t忘記INTO關鍵字。 –

0

裏面的外過程,創建臨時表具有相似的模式從內過程返回的結果集。 當調用內過程,使用insert..exec,像這樣:

insert #tempTable exec InnerProcedure 

然後從臨時表中選擇的數據。

+0

不錯,謝謝我會試試這個,讓你知道 – Lav

+0

它的作用謝謝! – Lav

相關問題