アプリ版:「スタンプのみでお礼する」機能のリリースについて

使用環境は 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行単位で処理を確認してい
くことはできないのでしょうか?

A 回答 (1件)

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



RAND()*10の値が9.5以上だと破たんする(=丸められて10になる。)ので、floorするとか。
    • good
    • 2
この回答へのお礼

遅くなりました

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

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

お礼日時:2012/11/17 20:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す