【发布时间】:2018-03-24 17:16:35
【问题描述】:
我调用的程序每天都在工作。我需要将当前日期之前的一天传递/迭代到程序以执行操作。可以提供一些帮助。这是我尝试过的示例,但它无法正常工作。我是初学者。
USE [aaa]
GO
DECLARE @return_value int
DECLARE @VarDate1 Datetime ='2015-09-30'
DECLARE @VarDate2 Datetime ='2015-09-30'
WHILE (@VarDate2 <= '2015-12-10')
BEGIN
EXEC @return_value = [dbo].[procname]
@tday1 = @VarDate1 ,
@tday2 = @VarDate2
SET @VarDate2 = DATEADD(DAY, 1, @VarDate2)
set @VarDate1 = @VarDate2
SELECT 'Return Value' = @return_value
END
GO
【问题讨论】:
-
定义
fails to work。你有错误吗?它现在循环吗?另外,为什么你总是有两个相同的变量? -
PLSQL 和 SQL SERVER 不一样。请删除plsql标签。
-
@WEI_DBA 我没有收到任何错误,该过程没有结束。该过程需要开始日期和结束日期,因此请保持相同。
-
@mux 坏习惯很难改掉,而且会让沟通变得困难。如果您的程序需要开始和结束日期参数,那么为什么您将变量命名为 VarDate1 和 VarDate2?您需要更加努力地成为一名更好的开发人员 - 其中一部分是让您的代码更易读、更容易理解。
-
@mux 但是让我们继续。您的循环不是当前的问题。所以你需要把你的逻辑分解成更小的、可测试的部分。由于您的程序需要开始日期和结束日期,该程序是否还假设这些日期NOT 相同?现在是通过使用第一次迭代中使用的值手动执行过程来检查的好时机。这行得通吗?
标签: sql sql-server sql-server-2008 while-loop