同じSQLServerに2つのデータベースがあります。同じコード。
入力パラメータを持つストアドプロシージャがあります@Test INT
。あるデータベースNUMERIC
では、その入力に値を渡すと、値が切り捨てられ、すべてが正常に機能します。もう1つは、同じことを行うと、次のエラーが発生します。
データ型numericをintに変換中にエラーが発生しました
ストアドプロシージャのシグネチャは次のとおりです。
CREATE PROCEDURE [dbo].[blProductGetTariff]
(
@CurrencyID INT,
@ProductID INT,
@TradeDate DATETIME,
@TotalDays INT,
@onTariff NUMERIC(22, 10) OUTPUT
)
そして、これが私がそのストアドプロシージャを呼び出す方法です:
EXEC blProductGetTariff @CurrencyID,
@MTPLY_VolumeID,
@TradeDate,
@VolumeParam,
@VolumeMultiplierRate OUTPUT
@VolumeParam
は数値であり@TotalDays
、1つのデータベースでは正常にフィードされますが、2番目のデータベースではフィードされません。
これに関与する可能性のあるデータベース設定は何でしょうか?1つありますか?または私は何かが欠けています、そしてこの奇妙な行動には他の理由がありますか?
更新:Darinは、以下のコメントの1つで非常に良い点を指摘しました。「また、上記のコードを見ると、numeric(22,10)を渡すと、intがオーバーフローする可能性があります。その場合は、数値を小さくするか、整数を渡します」..彼は正しかった。したがって、INTをBIGINTに変更すると問題は解決しましたが、最初のデータベースで発生しない理由はまだわかりません。INTですべてが正常に機能し、テストにまったく同じデータ(実際には同じファイル)を使用します。