0

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

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

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

4

2 回答 2

1

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

您始终可以从会话中获取 IDbConnection,然后将普通 ODP.Net 用于此类场景(您失去 nh 功能),或者更改存储过程。

于 2010-07-22T20:04:07.930 回答
0

我找到了一个使用 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();
}
于 2010-12-20T17:57:38.077 回答