存储过程与用户定义的错误处理功能

时间:2010-01-19 21:22:54

标签: tsql sql-server-2000

我的ERP数据库使用不可为空的日期时间字段。但是,当一个不可用时,它会输入''作为日期时间,并返回'1900-01-01 00:00:00.000'作为值。

我想在仅从Datetime字段中剥离Date时禁止1900个日期。我创建了以下UDF:

CREATE FUNCTION ExtractDate(@DirtyDate DATETIME)
  RETURNS VARCHAR(10) AS
  BEGIN
    DECLARE @CleanDate VARCHAR(10)
    SELECT @CleanDate =
             CASE
               WHEN @DirtyDate = '' THEN ''
               ELSE CONVERT(VARCHAR(10), @DirtyDate, 101)
             END

    RETURN @CleanDate
  END

这有效,但我想添加错误处理,以防用户在日期时间字段以外的地方使用它。经过一些谷歌搜索后,我发现UDF无法做到这一点。

但是,如果我将其写为存储过程,我仍然可以在select语句中调用它吗?有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:2)

不,你不能在select语句中调用存储过程。

我赞赏你想要包含错误处理的野心,但最好的办法是在应用程序端检查 - 不要让人们在非日期字段上使用该功能。