0

我的存儲過程創建一個公共表表達式找到「最近交易」 /「最佳買入」列出的每個StockName(代碼是漫長的,但使用表VAR(天青):SQL使用內部的CTE

row_number() OVER (partition BY StockName ORDER BY Date/Price)  

和WHERE國家=「USA」)

雖然工作正常我現在想的能力添加到輸入從一個單獨的查詢結果(結果集的國家:「美國」,「CAN」, 'MEX')並通過上面顯示的SP循環。

但是,我迷失在如何以及在哪裏做數據傳遞和/或循環。

我應該有兩個SP,並通過它們之間的值???或者在一個SP內創建一個循環?

回答

1

您可以使用SQL CURSOR循環查詢結果並調用您提到的存儲過程。這裏是使用CURSOR的示例。

declare cur_countr cursor for 
    select 'USA' as Country union 
    select 'CAN' as Country union 
    select 'MEX' as Country 

declare @country nvarchar(50) 
open cur_countr 

fetch next from cur_countr into @country 
    while(@@FETCH_STATUS = 0) 
      begin 
         print @country 
     -- You will get country here and invoke the Stored Procedure you defined 
         fetch next from cur_countr into @country 
      end 

close cur_countr 
deallocate cur_countr 
+0

感謝您的回覆。我還沒有嘗試你的建議(並且由於單獨查詢的結果,遊標中的國家數量會有所不同),但我之前已經閱讀過應該避免使用遊標(如鼠疫)。 我認爲這不是(總是)如此? –

+0

我們也可以像查詢那樣從一個查詢中定義一個遊標。從table_countries聲明選擇國家的cur_countr遊標 – Amor