IF @hoge > 0
SET @fuga = FLOOR( (@moge / CAST(@hoge as DECIMAL) * 100 + 0.05) * 10 ) / 10
ELSE
SET @fuga = 0
上のコードで0除算エラーが発生する。なぜ??????
調べると、@hogeが0より大きく1より小さい場合に発生しているようであった。
そう、この場合、
CAST(@hoge as DECIMAL)は0になる!
正しくは、
CAST(@hoge as DECIMAL(5,3)) とか、適当に有効桁数を指定してあげないといけない。
変にDECIMALだけで通っちゃうので困ったものだが、今度こそ気をつけよう!