【问题标题】:NHibernate to access Oracle stored procedure REFCURSOR and output parameterNHibernate 访问 Oracle 存储过程 REFCURSOR 和输出参数
【发布时间】:2010-07-22 19:21:23
【问题描述】:

当前版本的 NHibernate (v2.1.2) 是否支持访问 Oracle 存储过程输出 REFCURSOR 除了输出参数?

我可以使用我的代码访问输出引用光标。但是我不确定我是否可以在同一个存储过程中访问额外的输出参数。

我们将不胜感激一些调用语法示例。谢谢。

【问题讨论】:

    标签: oracle nhibernate stored-procedures output-parameter


    【解决方案1】:

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

    您始终可以从会话中获取 IDbConnection,然后在这种情况下使用普通的 ODP.Net(您失去 nh 功能),或者更改存储过程。

    【讨论】:

      【解决方案2】:

      我找到了使用 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();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-11
        • 2010-10-12
        • 1970-01-01
        • 1970-01-01
        • 2018-07-28
        • 1970-01-01
        • 2013-12-08
        • 1970-01-01
        相关资源
        最近更新 更多