在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);
问题解决。