SQL存储过程除法小数舍入

SQL存储过程除法小数舍入,sql,Sql,我为division创建了一个简单的存储过程。当我运行它时,它对数字进行四舍五入,即使它们是小数。例如,5.0/10.0=1。为什么会这样 以下是脚本: GO CREATE PROCEDURE uspDivide2Numbers2 @intValue1 AS DECIMAL ,@intValue2 AS DECIMAL AS SET NOCOUNT ON --Report only errors DECLARE @intResult AS DECIMAL = 0

我为division创建了一个简单的存储过程。当我运行它时,它对数字进行四舍五入,即使它们是小数。例如,
5.0/10.0=1
。为什么会这样

以下是脚本:

GO
CREATE PROCEDURE uspDivide2Numbers2
     @intValue1 AS DECIMAL
    ,@intValue2 AS DECIMAL
AS
SET NOCOUNT ON      --Report only errors

DECLARE @intResult AS DECIMAL = 0

--Do calculation
SELECT @intResult = @intValue1 / @intValue2

--Display results
SELECT @intResult AS intResult

GO

uspDivide2Numbers2 5.0, 10.0

谢谢

您尚未定义十进制数据类型的比例

使用指定的比例声明存储过程参数

  @intValue1 AS DECIMAL(10,2)
    ,@intValue2 AS DECIMAL(10,2)

这意味着@intResult可以在小数点后有两位数字(即刻度=2),最多10位。
如果不定义小数位数,sql将假定小数位数为0,因此小数点后不会有数字。

实际上,在您的示例中,精度是10,2是小数位数。刻度是小数点右侧存储的位数。OMG!很抱歉让我换衣服
DECLARE @intResult AS DECIMAL(10,2)