我希望我的SQL Server 2008存储过程的默认值如下所示:
Create Process sp_Transactions1
@earliestDate varchar(12)= CAST(DATEPART(YEAR,DATEADD(m,-3, getdate())) AS VARCHAR(4)) + RIGHT('00' + CAST(DATEPART(mm, DATEADD(m,-2, getdate())) AS varchar(2)), 2)+ '01'
As
但它不会编译
这不可能吗?
答案 0 :(得分:1)
正如Kritner所说,参数的默认值只能是常数。 但是,如果NULL值在此上下文中没有其他含义,则可以使用以下内容:
CREATE PROCEDURE sp_Transactions1
@earliestDate date=NULL
AS
IF @earliestDate IS NULL
SET @earliestDate=CONVERT(DATE,
STR(YEAR(DATEADD(m,-3, getdate())),4)
+RIGHT('0'+CONVERT(VARCHAR(2),MONTH(DATEADD(m,-2, getdate()))),2)
+'01'
)
--...