我可以判断我的存储过程是使用默认值还是显式值?

时间:2012-03-12 04:48:37

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

我有一个存储过程,它接受几个参数。其中一个是DateTime,其默认值为NULL。

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

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

我唯一能想到的就是它;

  1. 还有一个标志,表示用户想要保留DateTime信息
  2. 创建两个版本的存储过程;一个是DateTime参数,没有默认值,一个完全省略了DateTime参数。
  3. 两者看起来都不是很棒的想法,所以我们非常感谢任何想法。

1 个答案:

答案 0 :(得分:0)

您可能采用的一种方法是将参数默认值从NULL更改为“魔术”值 - 用户不太可能输入的日期 - 然后您可以在存储的正文中检查程序并采取相应行动。

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