如何在存储过程中声明一个默认值(上一个日期)的参数?
问题描述:
我想设置默认PARAMS在存储过程如下:如何在存储过程中声明一个默认值(上一个日期)的参数?
ALTER PROCEDURE [rpt].[STAT05] [email protected] = '2017-08-15', @EndDate = '2017-08-16'
@StartDate DATETIME2 = DATEADD(DAY, -2, GETDATE())
,@EndDate DATETIME2 = DATEADD(DAY, -1, GETDATE())
AS
BEGIN
,然而其返回:
必须声明标量变量 “@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())
https://stackoverflow.com/questions/6129508/how-do-you-initialize-a-variable-in-a-stored-procedure-with-a-function –