NHibernate для доступа к хранимой процедуре Oracle REFCURSOR и выходного параметра - PullRequest
0 голосов
/ 22 июля 2010

Поддерживает ли текущая версия NHibernate (v2.1.2) доступ к выходу хранимой процедуры Oracle REFCURSOR в дополнение к выходному параметру?

Я могу получить доступ к выходному рефкурсеру из моего кода,Однако я не уверен, что смогу получить доступ к дополнительному выходному параметру в той же хранимой процедуре.

Некоторые примеры синтаксиса вызова будут с благодарностью приняты.спасибо.

Ответы [ 2 ]

1 голос
/ 23 июля 2010

Нет, это не так. Поддерживается только один refcursor, и он должен быть первым параметром в sproc.

Вы всегда можете получить IDbConnection из сеанса и затем использовать обычный ODP.Net для таких сценариев (вы теряете функциональность), или, скорее, изменить хранимую процедуру.

0 голосов
/ 20 декабря 2010

Я нашел решение для вызова старых хранимых процедур с помощью 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();
}
...