2010-01-19 80 views
2

我的ERP数据库使用不可空的日期时间字段。但是,如果日期时间不存在,则输入日期时间,并返回'1900-01-01 00:00:00.000'作为值。存储过程与用户定义的错误处理功能

我想从日期时间字段中剥离日期时禁止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语句中调用它吗?有人能指引我朝着正确的方向吗?

回答

2

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

我鼓励您希望包含错误处理的雄心壮志,但您最好的选择是在应用程序方面检查 - 不允许人们在非日期字段上使用该函数。