我有收到一个特定的日期作为参数 即Exec的ProcDB“20150428”SQL,如何循环使用作为参数的过程的日期列表?
我经常需要运行这个程序对许多日期和程序通常我重新输入Exec的ProcDB“日期1” GO Exec的ProcDB“ date2'go ..... 我认为这是不聪明,所以
我可以使用SELECT DISTINCT [日期]日期从表1排序[日期]的有效的列表。
所以我想创建一个接收Start_Dt和END_DT 一个新的程序和它遍历所有日期,我选择不同的收益,其中包括Start_Dt和END_DT之间的。
ie something like:
Create ProcDBlist Start_Dt as date, End_Dt as date
For each date in: Select Distinct [date] from [table1] where [date] >= @Start_Dt and [date] <= @End_dt
Do: Exec ProcDB 'Date n'
End
更新:
最终溶液:
Create procedure [dbo].[ProcessDBRange] (@Start_dt as varchar(15) =null, @End_dt as varchar(15) =null)
As
Begin
DECLARE @date as varchar(15)
DECLARE Cursor_ProcessDB CURSOR FOR
Select Distinct Convert(varchar(15), [date], 112) as [date]
From [Prices]
Where [date] >= @Start_dt and [date] <= @End_dt
Order By [date]
OPEN Cursor_ProcessDB
FETCH next FROM Cursor_ProcessDB
INTO @date
WHILE @@FETCH_STATUS = 0
BEGIN
Exec ProcessDB @date
FETCH next FROM Cursor_ProcessDB
INTO @date
END
CLOSE Cursor_ProcessDB
DEALLOCATE Cursor_ProcessDB
End
检查出答案[这里](http://stackoverflow.com/questions/477064/is-it-possible-to -execute-A-存储过程-过一集,而无需-使用-A-光标)。 – zimdanen