SQL存储过程分部用小数舍入

时间:2013-05-20 02:47:10

标签: sql

我为分区创建了一个简单的存储过程。当我运行它时,它会对数字进行舍入,即使它们是小数。例如,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

谢谢

1 个答案:

答案 0 :(得分:3)

您尚未为DECIMAL数据类型定义比例。

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

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

DECLARE @intResult AS DECIMAL(10,2)

这意味着@intResult在小数点后可以有两位数(即scale = 2)和最多10位数。 如果你没有定义比例,sql假定scale = 0,因此你不会得到小数点后的数字。