0

NHibernateの現在のバージョン(v2.1.2)は、出力パラメータに加えて、Oracleストアドプロシージャの出力REFCURSORへのアクセスをサポートしていますか?

コードを使用して、出力refcursorに正常にアクセスできます。ただし、同じストアドプロシージャで追加の出力パラメータにアクセスできるかどうかはわかりません。

構文の呼び出しのサンプルをいただければ幸いです。ありがとう。

4

2 に答える 2

1

いいえ、そうではありません。サポートされているリフレクターは1つだけであり、sprocの最初のパラメーターである必要があります。

いつでもセッションから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 に答える