小刀

----像写情书一样写程序,像看小说一样看代码
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
在sqlserver 2000的存储过程中定义为:
    @ExpendedTime decimal(10,2) output
在C#中定义接收参数:
    System.Data.SqlClient.SqlParameter param;
    param = new System.Data.SqlClient.SqlParameter("@ExpendedTime", System.Data.SqlDbType.Decimal);
    param.Direction = ParameterDirection.Output;

这时返回的结果总为取整后的值,如49.5就返回50

在事件探查器中发现:
    declare @P1 numeric(29,0)
    set @P1=50
    exec GetThreadExpendedTime @ThreadId = 4, @ExpendedTime = @P1 output
    select @P1

decimal类型变成没有小数位了,顾返回的总是取整以后的值
修改C#代码,将:
    param = new System.Data.SqlClient.SqlParameter("@ExpendedTime", System.Data.SqlDbType.Decimal);
改为:
    param = new System.Data.SqlClient.SqlParameter("@ExpendedTime", System.Data.SqlDbType.Float);
问题解决。