在SQL Server 2005中从用户定义的函数"捕获"错误

3
我有一个函数,它接受一个数字作为输入并将其转换为日期。这个数字不是任何标准形式的日期数字,因此我必须手动将数字的各个部分细分为各种日期部分,将日期部分强制转换为varchar字符串,然后将字符串连接和转换为新的datetime对象。
我的问题是如何捕获强制转换失败并从我的函数返回null或低范围值?我希望我的函数“被动”失败,返回默认值,而不是向我的存储过程返回失败代码。TRY/CATCH语句显然无法在函数内部工作(除非我不知道某种类型的定义标志),尝试使用标准的'@@Error <> 0'方法也不起作用。
3个回答

2
SELECT CASE WHEN ISDATE(@yourParameter) = 1
   THEN CAST(@yourParameter AS DATETIME) 
   ELSE YourDefaultValue 
END

1
RLH没有说过这个数字不是任何标准日期格式吗?我认为在这种情况下ISDATE函数无法使用。 - wcm

2

有趣的链接。我之前不知道APPLY子句。 - wcm

0

由于格式非标准化,我认为您必须在转换之前自己进行所有验证。确保各个部分是数字,检查月份是否在1到12之间,确保不是2月30日等。如果任何一项失败,您将返回空值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接