代码之家  ›  专栏  ›  技术社区  ›  Niner

NHibernate访问Oracle存储过程REFCURSOR和输出参数

  •  0
  • Niner  · 技术社区  · 16 年前

    当前版本的NHibernate(v2.1.2)是否支持accessoracle存储过程输出REFCURSOR 此外 输出参数?

    我可以用我的代码访问输出。但是,我不确定是否可以访问同一存储过程中的附加输出参数。

    一些调用语法的例子将不胜感激。谢谢。

    2 回复  |  直到 16 年前
        1
  •  1
  •   LeMaciek    16 年前

    不,没有。只支持一个refcursor,它必须是存储过程中的第一个参数。

    您总是可以从会话中获得IDbConnection,然后在这种情况下使用普通ODP.Net(您将失去nh功能),或者更确切地说是更改存储过程。

        2
  •  0
  •   Custodio    15 年前

    我找到了用NHibernate调用旧存储过程的解决方案。

    using (ITransaction transaction = _session.BeginTransaction()) {
        IDbCommand command = new OracleCommand();
        command.Connection = _session.Connection;
    
        command.CommandType = CommandType.StoredProcedure;
        command.CommandText = "pk_package.pr_procedure";
    
        // Set input parameters
        var param1 = new OracleParameter("@param1", OracleDbType.Decimal) {Value = someField};
        var param2 = new OracleParameter("@param2", OracleDbType.Decimal) {Value = 1};
    
        command.Parameters.Add(param1);
        command.Parameters.Add(param2);
    
        // Execute the stored procedure
        command.ExecuteNonQuery();
        transaction.Commit();
    }
    
    推荐文章