2013-05-20 40 views
1

我創建了一個簡單的存儲過程劃分。當我運行它時,即使它們是小數,它也會將數字四捨五入。例如,5.0/10.0=1。它爲什麼這樣做?SQL存儲過程部門小數四捨五入

下面是腳本:

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 

謝謝

回答

3

您還沒有定義爲規模decimal數據類型。

用指定的比例聲明您的存儲過程參數。

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

DECLARE @intResult AS DECIMAL(10,2) 

這意味着@intResult可以有後兩位數字小數點(即標度= 2)和最大10位數字。 如果你沒有定義比例,sql假定scale = 0,因此你不會得到小數點後的數字。

+0

其實,在你的例子中,精度是10和2是比例。刻度是存儲在小數點右側的位數。 OMG! – Louis

+0

OMG!對不起..讓我換 –

+0

就是這樣,謝謝! – mcgregors