我需要在每個日曆月末執行存儲過程。它應該以本月的結束和上個月的結束作爲開始日期。SQL Server:如何在每個日曆月末運行存儲過程
下面的例子:
exec my_report @ReportStartDate = '20140731', @ReportEndDate='20140831'
exec my_report @ReportStartDate = '20140131', @ReportEndDate='20131231'
exec my_report @ReportStartDate = '20140228', @ReportEndDate='20140131'
我的目標是存儲在表中的結果。所以我需要創建一個新的存儲過程來調用當前的存儲過程。
我無法找到安排my_report
存儲過程。所以我創建了一個新的存儲過程。我的目標是每天撥打caller_sp
並查看呼叫者存儲過程中的日期。
這裏是我的調用者存儲過程。我對oracle有很好的瞭解,但是我是SQL Server的新手。
- 有沒有辦法安排
my_report
在每個日曆月月底和發送的開始和結束日期。 - 有我的代碼如下
代碼像樣的版本:
declare @reportstartyear VARCHAR(4) = null
declare @ReportEndDate DATETIME = null
declare @ReportStartDate DATETIME = null
if month(getdate()) = '01'
Begin
if DAY(getdate()) = '31'
Begin
set @reportstartyear = year(getdate())-1
set @ReportStartDate = cast(@reportstartyear + '1231' as Datetime)
exec [LTR].[LetterOfGuaranteeProceedsReport]
@ReportStartDate, @ReportEndDate = cast(select getdate())
end
end
else if month(getdate())='02'
begin
if year(getdate())%4=0
begin
if day(getdate())='29'
begin
set @reportstartyear=year(getdate())
set @ReportStartDate=cast(@reportstartyear+'0131' as Datetime)
exec [LTR].[LetterOfGuaranteeProceedsReport] @ReportStartDate,@ReportEndDate=cast(select getdate())
end
end
end
else if day(getdate())='28'
begin
set @reportstartyear=year(getdate())
set @ReportStartDate=cast(@reportstartyear+'0131' as Datetime)
exec [LTR].[LetterOfGuaranteeProceedsReport] @ReportStartDate,@ReportEndDate=cast(select getdate())
end
else if month(getdate())='03'
begin
if day(getdate())='31'
begin
if year(getdate())%4=0
begin
set @reportstartyear=year(getdate())
set @ReportStartDate=cast(@reportstartyear+'0229' as Datetime)
exec [LTR].[LetterOfGuaranteeProceedsReport] @ReportStartDate,@ReportEndDate=cast(select getdate())
end
else
begin
set @reportstartyear=year(getdate())
set @ReportStartDate=cast(@reportstartyear+'0228' as Datetime)
exec [LTR].[LetterOfGuaranteeProceedsReport] @ReportStartDate,@ReportEndDate=cast(select getdate())
end
end
end