循环以执行月末日期的存储过程



我正在寻找loop的一些帮助,这将允许我在2016年1月至2021年1月的每个月末多次execute存储过程。我有一个calendar,它给了我每个月的结束(如下所示)。我需要像这样execute每个存储过程:-EXECUTE usp_something @asatdate

SELECT TOP 100.*
FROM dbo.Dim_Calendar
WHERE iscalendarmonthend = 1

我完全没有Loops的经验,并且总是被告知不要使用它们,所以我有点担心,所以我会确保我将在本地完全测试。

谢谢。

只要上面的查询只提取您希望在存储过程中运行的月末日期,就可以使用游标对其进行循环,如下所示。

DECLARE @asatdate DATETIME
DECLARE CURSOR_DB CURSOR FAST_FORWARD FOR
SELECT MonthEndDate
FROM dbo.Dim_Calendar
WHERE iscalendarmonthend = 1

OPEN CURSOR_DB
FETCH NEXT FROM CURSOR_DB INTO @asatdate
WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE usp_something @asatdate
FETCH NEXT FROM CURSOR_DB INTO @asatdate
END
CLOSE CURSOR_DB
DEALLOCATE CURSOR_DB