如何在存储过程中声明具有默认值(上一个日期)的参数?

How to declare a paramater with default value (previous date) in a Stored Procedure?

我想在存储过程中设置默认参数如下:

ALTER PROCEDURE [rpt].[STAT05] --@StartDate = '2017-08-15', @EndDate = '2017-08-16'

    @StartDate      DATETIME2 = DATEADD(DAY, -2, GETDATE()) 
    ,@EndDate       DATETIME2 = DATEADD(DAY, -1, GETDATE()) 

AS
BEGIN

,然而 returns:

Must declare the scalar variable "@StartDate".

这个说法有什么问题?

sp 中参数的默认值必须是常量。

ALTER PROCEDURE [rpt].[STAT05] 
    @StartDate      DATETIME2 =  null 
   ,@EndDate       DATETIME2   =null
AS
BEGIN

IF @StartDate is null
SET @StartDate =  DATEADD(DAY, -2, GETDATE()) 

IF @EndDate is null
SET @EndDate =  DATEADD(DAY, -1, GETDATE())