我在我的一个C#项目中使用以下SQL Server存储过程.
create procedure [dbo].[TestRecordSelect]
@OMarks numeric(3,1) output
as 
begin
select @OMarks = isnull(sum(cast(OMarks as numeric(3,1))),0) from Marks 
end
Run Code Online (Sandbox Code Playgroud)
当我在SQL Server中执行该过程时,我得到了所需的结果,即24.9.但是当我在我的C#项目中使用相同的过程并调用@OMarks如下
cmd.Parameters.Add("@OMarks", SqlDbType.Decimal).Direction = ParameterDirection.Output;
tbomarks.Text = cmd.Parameters["@OMarks"].Value.ToString();  
Run Code Online (Sandbox Code Playgroud)
我得到25而不是24.9这是四舍五入的数据.
我的问题是我不想得到25.我希望得到24.9的tbomarks
SqlParameter param = new SqlParameter("@OMarks", SqlDbType.Decimal);
param.Direction = ParameterDirection.Output;
param.Precision = 3;
param.Scale = 1;
cmd.Parameters.Add(param);
Run Code Online (Sandbox Code Playgroud)
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.scale.aspx