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
  • 相关阅读:
    python+selenium 定位隐藏元素
    数据库的几种去重方法总结
    用例设计方法与测试实践相结合思路
    边界值分析法
    等价类分析法
    CYQ.Data 支持分布式数据库(主从备)高可用及负载调试
    linux下rpm包安装、配置和卸载mysq
    linux命令 rpm
    Linux命令之rpm
    Linux rpm命令详解
  • 原文地址:https://www.cnblogs.com/dcrenl/p/4041111.html
Copyright © 2011-2022 走看看