NHibernate(v2.1.2)的当前版本是否支持访问Oracle存储过程输出REFCURSOR 此外到输出参数?NHibernate访问Oracle存储过程REFCURSOR和输出参数
我可以用我的代码访问输出refcursor罚款。但是我不知道我可以在同一个存储过程中访问额外的输出参数。
调用语法的一些示例将不胜感激。谢谢。
NHibernate(v2.1.2)的当前版本是否支持访问Oracle存储过程输出REFCURSOR 此外到输出参数?NHibernate访问Oracle存储过程REFCURSOR和输出参数
我可以用我的代码访问输出refcursor罚款。但是我不知道我可以在同一个存储过程中访问额外的输出参数。
调用语法的一些示例将不胜感激。谢谢。
不,它不。只支持一个refcursor,它必须是sproc中的第一个参数。
您可以始终从会话中获取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();
}