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
  • 相关阅读:
    vim删除某一列
    linux下在当前文件夹查找一个字符串信息
    .tar和.tar.gz的区别
    visual studio中调用masm汇编
    iconv转码失败的原因
    终端查看
    kubectl 常用命令总结
    Charles实战之Charles抓取https请求
    Fiddler实战之拟2G、3G、4G网络进行弱网测试
    Fiddler实战之使用Fiddler模拟弱网环境
  • 原文地址:https://www.cnblogs.com/dcrenl/p/4041111.html
Copyright © 2011-2022 走看看