NHibernate访问Oracle存储过程REFCURSOR和输出参数
当前版本的NHibernate(v2.1.2)是否支持除输出参数外访问Oracle存储过程输出REFCURSOR 我可以用我的代码很好地访问输出refcursor。但是,我不确定是否可以在同一存储过程中访问额外的输出参数NHibernate访问Oracle存储过程REFCURSOR和输出参数,oracle,nhibernate,stored-procedures,output-parameter,Oracle,Nhibernate,Stored Procedures,Output Parameter,当前版本的NHibernate(v2.1.2)是否支持除输出参数外访问Oracle存储过程输出REFCURSOR 我可以用我的代码很好地访问输出refcursor。但是,我不确定是否可以在同一存储过程中访问额外的输出参数 如能提供一些调用语法示例,将不胜感激。谢谢。没有。只支持一个refcursor,并且它必须是存储过程中的第一个参数 您总是可以从会话中获取IDbConnection,然后在这种情况下使用普通的ODP.Net(您将失去nh功能),或者更确切地说是更改存储过程。我找到了一种使用NH
如能提供一些调用语法示例,将不胜感激。谢谢。没有。只支持一个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();
}