我有一个在表中看起来像这样的列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
好的,我很愚蠢,有一个我没有注意到的触发器正在对该字段进行一些更正