powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate, вызов хранимой процедуры Oracle
14 сообщений из 14, страница 1 из 1
NHibernate, вызов хранимой процедуры Oracle
    #38063764
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное уже обсуждалось, что-то не нашел...

1. Мне необходимо вызвать хранимую процедуру Oracle, без всяких маппингов. А-ля ADO.NET.
2. И еще, можно как-то NHibernate настроить на работу с Oracle.DataAccess.Client а не System.Data.OracleClient

Спасибо
...
Рейтинг: 0 / 0
NHibernate, вызов хранимой процедуры Oracle
    #38063790
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawНаверное уже обсуждалось, что-то не нашел...

1. Мне необходимо вызвать хранимую процедуру Oracle, без всяких маппингов. А-ля ADO.NET.
2. И еще, можно как-то NHibernate настроить на работу с Oracle.DataAccess.Client а не System.Data.OracleClient

Спасибо

1. Проблем нет
2. Да
...
Рейтинг: 0 / 0
NHibernate, вызов хранимой процедуры Oracle
    #38063792
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда тыкните как это сделать
...
Рейтинг: 0 / 0
NHibernate, вызов хранимой процедуры Oracle
    #38063815
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmaw,

1. Может не надо вам NHibernate? Возьмите способ попроще - Dapper , PetaPoco . Сам сейчас использую NHibernate для своего приложения, и Dapper для вызова сторонних хранимок в других базах.
2. Надо создать свой IConnectionProvider, и прописать в конфигурации . Гугл подскажет кучу примеров реализации.
...
Рейтинг: 0 / 0
NHibernate, вызов хранимой процедуры Oracle
    #38063842
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtor,

Не хочется для вызова хранимок использовать параллельно с NH еще что-то, например, ADO.NET. вот и хочу их вызывать через NH
...
Рейтинг: 0 / 0
NHibernate, вызов хранимой процедуры Oracle
    #38063876
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmaw,

тогда копайте до конца главы. . Но я вас предупреждал.
...
Рейтинг: 0 / 0
NHibernate, вызов хранимой процедуры Oracle
    #38064020
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtorkmaw,

тогда копайте до конца главы. . Но я вас предупреждал.

этот мануал я штудировал - он для меня основной. наверное, надо глубоко копать. пока вот до этого докопался:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
using (ISession s = NHibernateSessionManager.Instance.GetSession())
{


      var implementor = s.GetSessionImplementation();
      var driver = implementor.Factory.ConnectionProvider.Driver;

      SqlType[] param = new SqlType[3]
      {
          new SqlType(DbType.String),
          new SqlType(DbType.Int32),
          new SqlType(DbType.String)};

      IDbCommand cmd = driver.GenerateCommand(CommandType.StoredProcedure, new SqlString("test.proc1"), param);

      OracleParameter p1 = ((OracleCommand)cmd).Parameters[0];
      OracleParameter p2 = ((OracleCommand)cmd).Parameters[1];
      OracleParameter p3 = ((OracleCommand)cmd).Parameters[2];
      
      cmd.ExecuteNonQuery();
}



правильно ли иду - не знаю. вызов НЕ работает. может еще что подскажите?
...
Рейтинг: 0 / 0
NHibernate, вызов хранимой процедуры Oracle
    #38064189
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmaw,

плохо штудировали. Что вы написали - ADO.NET в чистом виде! Смотрите на session.CreateSqlQuery().
...
Рейтинг: 0 / 0
NHibernate, вызов хранимой процедуры Oracle
    #38064327
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtorkmaw,

плохо штудировали. Что вы написали - ADO.NET в чистом виде! Смотрите на session.CreateSqlQuery().

уже и так, и сяк перепробовал
Код: c#
1.
2.
3.
4.
5.
6.
ISession s = NHibernateSessionManager.Instance.GetSession();
            IQuery q = s.CreateSQLQuery("begin test.proc1(:a, :b, :c); end;")
                .SetString("a", "asd")
                .SetInt32("b", 23)
                .SetString("c","");
            q.ExecuteUpdate();



не получается - Oracle ругается то на синкасис, то на параметры
...
Рейтинг: 0 / 0
NHibernate, вызов хранимой процедуры Oracle
    #38064376
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разобрался частично. оказывается, дело было в OUT параметре хранимой процедуры. теперь вопрос, как с OUT параметрами работать?
...
Рейтинг: 0 / 0
NHibernate, вызов хранимой процедуры Oracle
    #38064909
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmaw,

с NHibernate - никак.
...
Рейтинг: 0 / 0
NHibernate, вызов хранимой процедуры Oracle
    #38065261
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перепиши хп таким образом, чтобы она отдавала out значения в строке рекордсета. Те же яйца, только в профиль.
...
Рейтинг: 0 / 0
NHibernate, вызов хранимой процедуры Oracle
    #38065727
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

хотя да, МСУ дело говорит. Если очень хочется через Хибер - то можно эту процу обернуть в другую, и возвращать как рекордсет.
...
Рейтинг: 0 / 0
NHibernate, вызов хранимой процедуры Oracle
    #38068733
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtorМСУ,

хотя да, МСУ дело говорит. Если очень хочется через Хибер - то можно эту процу обернуть в другую, и возвращать как рекордсет.
так тоже у меня не получилось - может не так делаю. делал как тут написано:

"For Oracle the following rules apply:


A function must return a result set. The first parameter of a procedure must be an OUT that returns a result set. This is done by using a SYS_REFCURSOR type in Oracle 9 or 10. In Oracle you need to define a REF CURSOR type, see Oracle literature."

возвращал ref cursor. хз как получить OUT. короче я уже забил. с SQL работаю через ADO.NET
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate, вызов хранимой процедуры Oracle
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]