SQL CASE Catch and Return Error - PullRequest
1 голос
/ 05 мая 2011

Я создаю триггер, чтобы выполнить некоторые вычисления для меня.Тем не менее, я просто пишу команды, чтобы увидеть, работают ли они прямо сейчас и производят обработку ошибок.Поэтому я написал следующий код:

DECLARE @strTotalAssets varchar(8000)

SELECT @strTotalAssets = (SELECT ProjectOther2 FROM
            Project WHERE ProjectID = '00000:')

SELECT 
    CASE
      WHEN RIGHT(value, 1) = 'M' THEN LEFT(value, (LEN(value)-1)) * 1000000
      WHEN RIGHT(value, 1) = 'T' THEN LEFT(value, (LEN(value)-1)) * 1000
      WHEN RIGHT(value, 1) > 0 THEN RETURN 'Error: You forgot to put a mutliplier Value'
      ELSE 'Error'
    END
FROM Split(@strTotalAssets, '|')

Проблема, с которой я столкнулся, заключается в том, что я не знаю, как выйти из сценария и вернуть ошибку.Прости мое невежество, но только начинаю на младшем администраторе.Надеюсь, из кода вы увидите, что я пытаюсь сделать.В основном, если пользователь забыл ввести буквенное значение, которое представляет множитель тысяч или миллионов, что означает, что значение возвращает только целое число, то выдаст ошибку и скажет пользователю, что он забыл ввести значение.

Ответы [ 2 ]

2 голосов
/ 05 мая 2011

Поскольку это триггер, возвращать данные в истинном смысле не вариант; для чего-то, что обрабатывается так же, как, скажем, ошибка нарушения ключа и возвращается клиенту таким же образом, как вы можете RAISERROR:

RAISERROR('You forgot to put a mutliplier Value', 15, 121) 
0 голосов
/ 05 мая 2011

Вы ищете GOTO Error. Вот краткий учебник . Я только быстро просмотрел его, но он выглядел довольно хорошо для того, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...