【问题标题】:Can I tell if my stored proc is using the default value or an explicit value?我可以判断我的存储过程是使用默认值还是显式值?
【发布时间】:2012-03-12 04:48:36
【问题描述】:

我有一个接受多个参数的存储过程。其中之一是具有默认值为 NULL 的 DateTime。

不幸的是,这将被写入的列是一个可为空的 DateTime 列。这是一个问题,因为有时在调用存储过程时会忽略该参数,但它最终会将一个有效的日期时间覆盖到目标表中。

是否有任何 T-SQL 函数或其他方法可以用来确定调用者是否实际显式传入 NULL 或只是忽略该参数并让它设置默认值?

我唯一能想到的;

  1. 还有一个标志表明用户希望保留 DateTime 信息
  2. 创建两个版本的存储过程;一种具有 DateTime 参数且没有默认值,另一种则完全省略了 DateTime 参数。

这两个想法似乎都不是很棒的想法,因此非常感谢任何想法。

【问题讨论】:

  • 除了检查您的参数值是否为 NULL - 不,不是真的。存储过程的值是定义的默认值还是提供的值也不重要——值就是值。

标签: sql-server-2005 stored-procedures default-value


【解决方案1】:

您可能解决此问题的一种方法是将参数默认值从 NULL 更改为“神奇”值 - 您的用户不太可能输入的日期 - 然后您可以在存储过程的主体中检查它并采取相应的行动。

一个不错的魔术值选择是日期时间范围的开始或结束(01 Jan 175331 Dec 9999),具体取决于实际的数据配置文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 2019-03-27
    • 2010-09-14
    • 1970-01-01
    • 2020-10-18
    相关资源
    最近更新 更多