.net 存储过程中的 output参数取值问题

当存储过程中多个结果需要返回时经常需要用到output类型的参数,如果存储过程没有返回结果集只是输出output类型参数时使用如下代码:

db.AddOutParameter(dbCmd, "@ ParamName", DbType.Int32, 0);
db.ExecuteNonQuery(dbCmd);
int i = dbCmd.Parameters["@ParamName"].Value.ToString();

但是存储过程返回结果集时使用上面的代码程序将会出现异常,所以存储过程有结果集返回时应使用如下代码:

db.AddOutParameter(dbCmd,"@ ParamName", DbType.Int32,0);
  using (IDataReader idr =db.ExecuteReader(dbCmd))
{
}
int i =dbCmd.Parameters["@ParamName"].Value.ToString();

或者

db.AddOutParameter(dbCmd,"@ ParamName", DbType.Int32,0);
  using (IDataReader idr =db.ExecuteReader(dbCmd))
{
while(idr.Read())
{
}idr.Close();
int i =dbCmd.Parameters["@ParamName"].Value.ToString();
}

再或者

db.AddOutParameter(dbCmd,"@ ParamName", DbType.Int32,0);
  using (IDataReader idr =db.ExecuteReader(dbCmd))
{
while(idr.Read())
{
}
idr.NextResult();
int i =dbCmd.Parameters["@ParamName"].Value.ToString();
idr.Close();
}

总之,想要取得 output参数输出的结果值只能在DataReader结果集关闭或者指向一下个结果集时才能取到值。
以上代码使用的是.net企业库Microsoft.Practices.EnterpriseLibrary
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值