こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQLserver算術オーバーフローエラーについて

使用環境は DB SQL Server2008 Express
使用ツールは Microsoft SQL Server Management Studio です

SQLserver2000からSQLserver2008DBへ移行しようとしているのですが
ストアドプロシージャのところでうまくいきません

具体的には、処理を走らせると下記メッセージが出てきます

floatをデータ型numericに変換中に、算術オーバーフローエラーが発生しました
プロシージャ"○○"は、許可されていないステータスNULLを返そうとしました。
代わりにステータス0を返します

調べると 
小数点以下があるフィールド同士を掛けて、その結果の小数点以下をROUNDで切り
捨てた値を小数点のないフィールドに追加しようとするとエラーになる 
とありました。

下記 2行あたりが怪しいと思うのですが対処方法がわかりません。
ご教授願えないでしょうか?

SET @GetRand = CAST(RAND()*10 AS numeric(1,0))

SET @GetRand = CAST(RIGHT(CONVERT(varchar,CAST(RAND()*100 AS
numeric(2,0))+100),2) As numeric(2,0))

またストアドプロシージャは、VBのようにデバッグで1行単位で処理を確認してい
くことはできないのでしょうか?

投稿日時 - 2012-11-14 20:01:17

QNo.7797805

すぐに回答ほしいです

質問者が選んだベストアンサー

>SET @GetRand = CAST(RAND()*10 AS numeric(1,0))

RAND()*10の値が9.5以上だと破たんする(=丸められて10になる。)ので、floorするとか。

投稿日時 - 2012-11-15 01:03:04

お礼

遅くなりました

早速のアドバイスありがとうございます
おかげさまで無事解決しました。
一人で解決できず大変助かりました。

ありがとうございました。

投稿日時 - 2012-11-17 20:01:34

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-
-広告-
-広告-