NHibernateの現在のバージョン(v2.1.2)は、出力パラメータに加えて、Oracleストアドプロシージャの出力REFCURSORへのアクセスをサポートしていますか?
コードを使用して、出力refcursorに正常にアクセスできます。ただし、同じストアドプロシージャで追加の出力パラメータにアクセスできるかどうかはわかりません。
構文の呼び出しのサンプルをいただければ幸いです。ありがとう。
NHibernateの現在のバージョン(v2.1.2)は、出力パラメータに加えて、Oracleストアドプロシージャの出力REFCURSORへのアクセスをサポートしていますか?
コードを使用して、出力refcursorに正常にアクセスできます。ただし、同じストアドプロシージャで追加の出力パラメータにアクセスできるかどうかはわかりません。
構文の呼び出しのサンプルをいただければ幸いです。ありがとう。
いいえ、そうではありません。サポートされているリフレクターは1つだけであり、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();
}