如果在存储过程中使用RETURN语句返回数值,.Net里用ExecuteScalar方法结果将会导致一个未引用到具体对象的异常,因为ExecuteScalar方法执行查询,并返回查询所返回的结果集中第一行的第一列。所有其他的列和行将被忽略。但是Return并不返回数据集,所以造成异常。
解决方法:
1、对存储过程动手,在存储过程中改由Select语句代替reutrn语句返回即可解决此问题。
2、通过ADO.Net来实现,使用SqlParameter设置Direction = ParameterDirection.ReturnValue,当然也没必要使用ExecuteScalar语句了,使用ExecuteNoneQuery都可以。