使用CTE

时间:2017-05-03 23:21:53

标签: sql-server azure stored-procedures while-loop common-table-expression

我的存储过程创建一个公用表表达式来查找"最后交易" /"最佳出价"对于每个列出的StockName(代码很长但使用:

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

和WHERE国家='美国' )

虽然工作正常但我现在想要添加从单独查询输入结果的功能(一组国家:' USA',' CAN',&#39 ; MEX')并循环显示上面显示的SP。

但是,我对如何以及在何处进行数据传递和/或循环感到迷茫。

我应该有两个SP'并传递它们之间的值???或者在一个SP内部创建一个循环?

1 个答案:

答案 0 :(得分: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