2012-04-24 38 views
4

我在我的一个C#项目中使用了以下SQL Server存储过程。如何在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 

我在执行SQL Server中的过程时得到了所需的结果,即24.9。但是,当我用我的C#项目相同的程序并调用@OMarks如下

cmd.Parameters.Add("@OMarks", SqlDbType.Decimal).Direction = ParameterDirection.Output; 
tbomarks.Text = cmd.Parameters["@OMarks"].Value.ToString(); 

我得到的25,而不是24.9是向上取整后的数据我。

我的问题是,我不希望得到25我想在tbomarks

回答

5

在你的C#24.9,你有没有指定的Scale(或精度)的参数,这意味着你得到零小数位。

如果没有明确指定的Scale属性数据可能会被截断和 服务器上的数据不适合在规模0(缺省值)

Precision和Scale所需的输出参数

+0

我同意你的:)这会教我张贴研究所后直接拿到晚宴ead的改进我的答案;) – MartW 2012-04-24 21:49:35

相关问题