テーブルにこのようなDECIMAL(10,2)
列があり、そのテーブルに行を挿入するストアド プロシージャがあります。その列のパラメーターは次のよう@FuelLiters AS DECIMAL(10, 2),
になります。ado.net を使用して、このストアド プロシージャを呼び出します。その列の sql パラメータは次のようになります
cmd.Parameters.Add(@FuelLiters, SqlDbType.Decimal).Value = fuelLiters;
(it's decimal value)
私が何をしても、SQLは私の値を変更しているので、小数点以下が2桁になります。FuelLiters = 56 の場合、データベースには 0.56 が保存されます。FuelLiters = 75.4 の場合、データベースには 7.54 が保存されます。
私は何を間違っていますか?
私のsqlパラメータは次のようになりましたが、それでも同じ問題です。
SqlParameter fuelParam = new SqlParameter();
fuelParam.SqlDbType = SqlDbType.Decimal;
fuelParam.ParameterName = "@FuelLiters";
fuelParam.Precision = 10;
fuelParam.Scale = 2;
fuelParam.Value = fuelLiters ;
cmd.Parameters.Add(fuelParam);
LE: 精度とスケールが設定された後に値が設定されるように sql パラメータを変更し、ストアド プロシージャを追加しました。
CREATE PROCEDURE [dbo].[SaveFuel]
@Id AS INT,
@RegNumber AS NVARCHAR(50),
@FuelLiters AS DECIMAL(10, 2)
AS
BEGIN
INSERT INTO [dbo].[Fuel]
(
[Id],
[RegNumber],
[Fuel_litres]
)
VALUES
(
@Id,
@RegNumber,
@FuelLiters
)
END
わかりました、私は愚かです、そのフィールドでいくつかの修正を行っていたことに気付かなかったトリガーがあります