В нашем приложении мы собираемся позволить пользователям вводить арифметические выражения (+ - * /), используя другие столбцы базы данных для чисел, которые затем будут анализироваться приложением и записываться в базу данных как вычисляемый столбец.
Однако существуют проблемы, которые позволяют пользователям создавать выражения, которые могут вызвать исключения при select *
таблице, такие как деление на ноль, арифметическое переполнение и другие возможные варианты, с которыми я еще не сталкивался ( хотя я думаю вот и все).
Наличие в базе данных исключения на select *
было бы абсолютно разрушительным. Я предпочел бы попытаться переписать их выражение во что-то, что изящно потерпит неудачу, если у них есть подверженные ошибкам данные.
Для деления на ноль решение довольно простое:
add [Col] as case {divisor} when 0 then N'DIVIDE-BY-ZERO' else {expression} end
Мой вопрос: что я могу сделать для арифметического переполнения? Отображение пустых или явно неверных данных в столбце не будет проблемой, но выдает исключения.