C# 为什么此存储过程不更新数据库中的数据?
我正在运行一个带有硬编码值的存储过程。命令成功执行,没有任何错误。但数据库中的数据没有更新。如果使用SQL Server运行该存储过程,则数据正在更新。我犯了什么错 C#代码 SQL Server代码C# 为什么此存储过程不更新数据库中的数据?,c#,sql,stored-procedures,C#,Sql,Stored Procedures,我正在运行一个带有硬编码值的存储过程。命令成功执行,没有任何错误。但数据库中的数据没有更新。如果使用SQL Server运行该存储过程,则数据正在更新。我犯了什么错 C#代码 SQL Server代码 DECLARE @return_value int, @O_iError int EXEC @return_value = [dbo].[GP_SOP_AdjustTax] @IN_SOPType = 3, @IN_SOPNo
DECLARE @return_value int,
@O_iError int
EXEC @return_value = [dbo].[GP_SOP_AdjustTax]
@IN_SOPType = 3,
@IN_SOPNo = 'stdinv2278',
@IN_AdjustAmount = 0.04,
@O_iError = @O_iError OUTPUT
SELECT @O_iError as N'@O_iError'
SELECT 'Return Value' = @return_value
GO
我认为问题是由这条线引起的:
AdjustTax.Parameters.Add("@IN_AdjustAmount", SqlDbType.Int).Value = 0.04;
因为类型是SqlDbType.Int
,并且您要传递0.04,所以该值很可能会四舍五入到0。在看不到实际存储过程的内容的情况下,我只能猜测为该参数传入一个值0会导致存储过程跳过更新,或者存储过程所做的计算会导致该列更新为它原来拥有的相同值
我会尝试将该行更改为:
AdjustTax.Parameters.Add("@IN_AdjustAmount", SqlDbType.Decimal).Value = 0.04M
编辑Decimal
是Numeric
Sql类型的正确映射,如。我认为问题是由以下行引起的:
AdjustTax.Parameters.Add("@IN_AdjustAmount", SqlDbType.Int).Value = 0.04;
因为类型是SqlDbType.Int
,并且您要传递0.04,所以该值很可能会四舍五入到0。在看不到实际存储过程的内容的情况下,我只能猜测为该参数传入一个值0会导致存储过程跳过更新,或者存储过程所做的计算会导致该列更新为它原来拥有的相同值
我会尝试将该行更改为:
AdjustTax.Parameters.Add("@IN_AdjustAmount", SqlDbType.Decimal).Value = 0.04M
编辑Decimal
是Numeric
Sql类型的正确映射,如。尝试SqlDbType。Decimal:
AdjustTax.Parameters.Add("@IN_AdjustAmount", SqlDbType.Decimal).Value = 0.04;
请尝试SqlDbType.Decimal:
AdjustTax.Parameters.Add("@IN_AdjustAmount", SqlDbType.Decimal).Value = 0.04;
请确认第三个输入参数的DB Type Int,即@IN_adjustAmount谢谢回复。类型为numaricIf类型为numaric..那么我在c代码中设置了哪种类型。请确认第三个输入参数的DB type Int,即@in_adjustamount谢谢回复。类型为numaric类型为numaric..那么我在c代码中设置了哪种类型。请告诉我为什么包含“M”(0.04M)。
M
仅表示十进制。请看这里:让我知道为什么包含“M”(0.04M)。M
仅表示decimal
。请看这里: