【问题标题】:Stored Procedure vs User Defined Function for Error Handling用于错误处理的存储过程与用户定义函数
【发布时间】:2010-01-23 22:47:14
【问题描述】:

我的 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 语句中调用它吗?有人可以指出我正确的方向吗?

【问题讨论】:

    标签: tsql sql-server-2000


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-11-17
      • 1970-01-01
      • 1970-01-01
      • 2015-01-02
      • 1970-01-01
      • 2016-12-30
      • 2011-12-07
      • 2022-01-04
      • 1970-01-01
      相关资源
      最近更新 更多