【问题标题】:Adding a default value to optional parameter of stored proce为存储过程的可选参数添加默认值
【发布时间】:2015-02-18 10:04:09
【问题描述】:

我想为我的 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

但它不会编译

这不可能吗?

【问题讨论】:

标签: tsql stored-procedures sql-server-2008-r2


【解决方案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'
    )
--...

【讨论】:

    猜你喜欢
    • 2012-12-14
    • 2014-05-13
    • 1970-01-01
    • 2012-08-06
    • 2010-11-07
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多