2013-05-20 2 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

당신은 정의하지 않은 스케일 감사 : 여기

는 스크립트입니다.

지정된 축척을 사용하여 저장 프로 시저 매개 변수를 선언하십시오.

@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는 눈금입니다. 스케일은 소수점 오른쪽에 저장된 자릿수입니다. – Louis

+0

OMG! 미안 .. 내가 바꿔 줄께 –

+0

그게 다예요, 고마워요! – mcgregors