2012-10-02 2 views
1

의해 삽입 된 값을 나눈다 I 테이블 DECIMAL(10,2) 그 테이블의 행을 삽입하는 저장 과정에서 표시되는 항목이있다. 해당 열의 매개 변수는 다음과 같습니다. @FuelLiters AS DECIMAL(10, 2),
나는 ado.net을 사용하여이 저장 프로 시저를 호출합니다. 해당 열의 sql 매개 변수는 다음과 같습니다.SQL 서버 2008 소수 (10,2)는 100

cmd.Parameters.Add(@FuelLiters, SqlDbType.Decimal).Value = fuelLiters; 
(it's decimal value) 

sql은 내 값을 수정하여 2 자리 소수를 갖게됩니다. fuelLiters = 56이면 데이터베이스 0.56에 저장됩니다. fuelLiters = 75.4이면 데이터베이스 7.54에 저장됩니다.

내가 뭘 잘못하고 있니?

내 sql 매개 변수는 이제 이와 같이 보이지만 여전히 동일한 문제입니다.

  SqlParameter fuelParam = new SqlParameter(); 
      fuelParam.SqlDbType = SqlDbType.Decimal; 
      fuelParam.ParameterName = "@FuelLiters";     
      fuelParam.Precision = 10; 
      fuelParam.Scale = 2; 
      fuelParam.Value = fuelLiters ; 
      cmd.Parameters.Add(fuelParam); 

LE : 정확도와 배율을 설정 한 후 값이 설정되도록 SQL 매개 변수를 수정하고 저장 프로 시저를 추가했습니다.

CREATE PROCEDURE [dbo].[SaveFuel] 
    @Id AS INT, 
    @RegNumber AS NVARCHAR(50), 
    @FuelLiters AS DECIMAL(10, 2) 
AS 
BEGIN 

    INSERT INTO [dbo].[Fuel] 
     (
      [Id],  
      [RegNumber], 
      [Fuel_litres]   
     ) 
     VALUES 
     (
      @Id, 
      @RegNumber, 
      @FuelLiters 
     ) 

END 

좋아, 내가 바보 오전, 해당 필드 당신은 SqlParameter에의 정밀도 및 스케일을 지정해야

+2

"내가 뭘 잘못하고 있니?" - 어떤 코드에서는 당신이 우리에게 보여주지 않은 것입니다. –

+0

첫눈에 코드 부수가 정확합니까? 저장 절차에 약간의 추가 작업이 있습니까? –

+0

값을 설정하기 전에 정밀도와 눈금을 설정하면 안됩니까? – IvoTops

답변