I want to have a “@myDate” parameter in a stored procedure that defaults to 2 years prior to today if nothing else is specified. I tried doing something like this in my procedure definition:
CREATE PROCEDURE myProcedure( @param1 int,
@param2 varchar(20),
@param3 int = null,
@myDate datetime = dateadd(year,-2,getDate()) )
I’m getting the following syntax error:
Incorrect syntax near '('.
Does sql server allow you to set dynamic expressions as default parameter values? If not, how can I get around this (other than the clumsy IF @myDate is null SET @myDate=...)?
You can’t use an expression as default value, and there is no really elegant way of doing this.
You can use
isnullorcoalesceinstead of theifstatement: