このアプリケーションでは、ユーザーが他のデータベース列を数値として使用して算術式 (+ - * /) を入力できるようにします。数値はアプリケーションによって解析され、計算列としてデータベースに書き込まれます。
select *
ただし、ゼロ除算、算術オーバーフロー、およびまだ遭遇していない可能性のある他のものなど、テーブルを使用するときに例外を引き起こす可能性のある式をユーザーが作成できるようにすることで発生する問題があります(ただし、それがすべてだと思います)。彼ら)。
データベースに例外をスローさselect *
せることは、絶対に壊滅的です。エラーが発生しやすいデータがある場合に正常に失敗するように、式を書き直すことをお勧めします。
ゼロ除算の場合、ソリューションは非常に簡単です。
add [Col] as case {divisor} when 0 then N'DIVIDE-BY-ZERO' else {expression} end
私の質問は、算術オーバーフローに対して何ができるでしょうか? 列に二段または明らかに間違ったデータを表示することは問題ではありませんが、例外をスローすることは問題になります。