Хранимая процедура против пользовательской функции для обработки ошибок - PullRequest
2 голосов
/ 20 января 2010

Моя база данных ERP использует ненулевые поля даты и времени. Тем не менее, он вводит «» для даты и времени, когда он недоступен, и возвращает «1900-01-01 00: 00: 00.000» в качестве значения.

Я хочу подавить даты 1900 года, удаляя дату только из поля Datetime. Для этого я создал следующий 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

Это работает, но я хотел добавить обработку ошибок в случае, если пользователь использовал ее для чего-то, кроме поля datetime. После некоторого поиска в Google я обнаружил, что это невозможно с UDF.

Однако, если я напишу это как хранимую процедуру, смогу ли я вызвать ее в операторе выбора? Может ли кто-нибудь указать мне правильное направление?

1 Ответ

2 голосов
/ 23 января 2010

Нет, вы не можете вызвать сохраненный процесс в операторе выбора.

Я приветствую ваше стремление включить обработку ошибок, но лучше всего проверить это на стороне приложения - не позволяйте людям использовать функцию в полях без даты.

...