zoukankan      html  css  js  c++  java
  • .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
  • 相关阅读:
    C# 通过反射初探ORM框架的实现原理
    Redis-Nosql数据库入门
    HTTPS 建立连接的详细过程
    Spring面试题
    struts2面试整理
    Java面试基本知识
    Spring MVC面试整理
    Mybatis面试整理
    Sublime 正则替换
    Hiberante知识点梳理
  • 原文地址:https://www.cnblogs.com/dcrenl/p/4041111.html
Copyright © 2011-2022 走看看