当前版本的 NHibernate (v2.1.2)除了输出参数外,是否支持访问 Oracle 存储过程输出 REFCURSOR?
我可以使用我的代码访问输出引用。但是我不确定我是否可以在同一个存储过程中访问额外的输出参数。
一些调用语法的示例将不胜感激。谢谢。
当前版本的 NHibernate (v2.1.2)除了输出参数外,是否支持访问 Oracle 存储过程输出 REFCURSOR?
我可以使用我的代码访问输出引用。但是我不确定我是否可以在同一个存储过程中访问额外的输出参数。
一些调用语法的示例将不胜感激。谢谢。
不,它没有。只支持一个 refcursor,它必须是存储过程中的第一个参数。
您始终可以从会话中获取 IDbConnection,然后将普通 ODP.Net 用于此类场景(您失去 nh 功能),或者更改存储过程。
我找到了一个使用 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();
}