C#的代码如下:
try
{
//调用存储过程
cmd.ExecuteNonQuery();
strErr = cmd.Parameters["@ErrMsg"].value.tostring();//strErr 是存储过程的输出参数
}
catch(Exception e)
(
strErr = e.Message.ToString();
return;
)
测试情况:我通过存储过程往数据库中插入一条重复的记录(已设置主键),调试存储过程时,输出参数strErr的错误消息大概为违反表的主键唯一性约束;但是在C#调试,执行ExecuteNonQuery()后,就跳入catch语句中,strErr的错误消息为Error converting data type nvarchar to int.为什么错误不一样呢?谁能帮我解释下原因,折腾了好几天???
你先手动调下你的存储过程,看存储过程是否抛出异常,如果存储过程调用没有问题,那是不是你的外部程序异常
参考自:
MySQL存储过程详解 http://www.data.5helpyou.com/article314.html
谢谢你们热心的回答,原因在于我在c#传入存储过程的类型,有的DBType、SqlDbType,统一成一种类型,就可以输出存储过程的报错信息。