近日调用一个存储过程时发现,Decimal类型的数据都被截成整型的,被搞得莫名其妙,尿水直流。没办法从SQL的数据类型、精度、存储过程一步步排查,最终发现是asp.net调用存储过程的参数问题。一般情况下为了偷懒,对SqlParameter的使用都是用简单的方式,可是对于有精度和小数要求的SQL数据类型可就不能再懒了,最起码也要用如下格式:
new SqlParameter("@SumS",SqlDbType.Decimal,9,ParameterDirection.Output,false,10,2,"",DataRowVersion.Current,"")
9是长度,10是精度,2是小数位