我希望在存储过程中有一个“@myDate”参数,如果没有指定其他内容,则默认为今天之前的2年。我尝试在我的程序定义中做这样的事情:
CREATE PROCEDURE myProcedure( @param1 int,
@param2 varchar(20),
@param3 int = null,
@myDate datetime = dateadd(year,-2,getDate()) )
我收到以下语法错误:
Incorrect syntax near '('.
sql server是否允许您将动态表达式设置为默认参数值?如果没有,我怎么能绕过这个(除了笨拙的IF @myDate is null SET @myDate=...
)?
答案 0 :(得分:9)
您不能将表达式用作默认值,并且没有非常优雅的方法。
您可以使用isnull
或coalesce
代替if
声明:
set @myDate = isnull(@myDate, dateadd(year, -2, getdate()))
答案 1 :(得分:1)