如何在存储过程中设置日期时间可选参数?

Posted

技术标签:

【中文标题】如何在存储过程中设置日期时间可选参数?【英文标题】:How to set datetime optional parameter in a stored procedure? 【发布时间】:2017-02-28 10:27:47 【问题描述】:

如何在sql server存储过程中设置datetime可选参数?

下面是我的存储过程,我想在@LocalDateTime is null时设置@LocalDateTime = utcdate

存储过程:

Create PROCEDURE [dbo].[ABC] 
(  
    @LocalDateTime datetime=getutcdate()
) 

【问题讨论】:

它有什么作用吗?如果是这样,是什么?为什么这不是你需要的?或者换句话说:请提出您的问题,以便人们了解您需要什么帮助。 【参考方案1】:

参数的默认值必须是常数。您可以在存储过程的主体内设置它:

Create PROCEDURE [dbo].[ABC] 
(  
    @LocalDateTime datetime = null
) 

as

begin

    set @LocalDateTime = ISNULL(@LocalDateTime,GETUTCDATE())

end

更多信息 here MSDN。摘录如下:

默认值 参数的默认值。如果定义了默认值 对于参数,可以在不指定参数的情况下执行过程 该参数的值。 默认值必须是常量,否则 可以为 NULL。

【讨论】:

感谢@Andrea,实际上我想在声明中赋值,但我认为这是不可能的..

以上是关于如何在存储过程中设置日期时间可选参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PL/SQL 中设置特定日期对表的操作执行?

如何在 GitHub 和 Jenkins 中设置 DB2 存储过程

SQL - 创建具有多个可选参数的存储过程

如何在与 SQL 的连接中设置日期格式?

带有可选“WHERE”参数的存储过程

从操作更新、删除、插入到存储过程 SQL 中设置值