fro*_*die 7 sql stored-procedures default dynamic
我希望在存储过程中有一个"@myDate"参数,如果没有指定其他内容,则默认为今天之前的2年.我尝试在我的程序定义中做这样的事情:
CREATE PROCEDURE myProcedure( @param1 int,
@param2 varchar(20),
@param3 int = null,
@myDate datetime = dateadd(year,-2,getDate()) )
Run Code Online (Sandbox Code Playgroud)
我收到以下语法错误:
Incorrect syntax near '('.
Run Code Online (Sandbox Code Playgroud)
sql server是否允许您将动态表达式设置为默认参数值?如果没有,我怎么能解决这个问题(除了笨拙IF @myDate is null SET @myDate=...)?
Guf*_*ffa 10
您不能将表达式用作默认值,并且没有非常优雅的方法来执行此操作.
您可以使用isnull或 coalesce代替if语句:
set @myDate = isnull(@myDate, dateadd(year, -2, getdate()))
Run Code Online (Sandbox Code Playgroud)