Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Oracle и .net / 3 сообщений из 3, страница 1 из 1
18.12.2012, 16:10
    #38083752
ArnyHD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle и .net
Всем привет!
Входные данные:
Есть приложение на C# .net под MSSql.
Есть задача перекинуть всё это добро на Oracle, которое уже частично переписано в рамках хранилища, но не переписано в рамках приложения.
В составе этого приложения есть ряд функций с входными параметрами (для получения параметров других объектов), которые возвращают таблицы (вполне устроит возврат всего одной строки или записи\набора\record).
При попытке загнать модель базы данных в вижуал студио на таких функциях выскакивает сообщение warning 6005: The function <function_name> has a return data type 'table' that is currently not supported for the target .NET Framework version. The function was excluded.
Вероятно, можно получать данные из таблиц курсорами или наборами значений.

Как можно получить значения параметров из таблиц oracle в C# .net?

Модератор: Тема перенесена из форума "Oracle".
...
Рейтинг: 0 / 0
25.12.2012, 02:08
    #38091381
Lord British
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle и .net
ArnyHD,

Из pipelined function

Код: plsql
1.
select * from table(my_package.my_func(:Param1, :Param2, :Param3))



В этом случае можете использовать везде в .NET коде, где можно использовать обычный select.

---

Из функции возвращающей ref_cursor
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
            using (var command = connection.CreateCommand())
            {
                command.CommandText = "my_package.my_func";
                command.CommandType = CommandType.StoredProcedure;
                
                var parameter = command.Parameters.Add(":result",
                    OracleDbType.RefCursor, ParameterDirection.ReturnValue);
                command.Parameters.Add(":p_param1", OracleDbType.Int32,
                    1/* значение параметра */, ParameterDirection.Input);
                
                command.ExecuteNonQuery();
                
                using (var cursor = (OracleRefCursor)parameter.Value)
                {
                    using (var reader = cursor.GetDataReader())
                    {
                        /* тут в примере читается только одна строка */
                        if (!reader.Read())
                            throw new ReadInfoException();

                        var values = new object[reader.FieldCount];
                        reader.GetValues(values);
                    }
                }
            }



----

Скачать ODT .NET и упростить себе жизнь. Заодно поделитесь как их EF5 провайдер с сабжем дружит? :)
...
Рейтинг: 0 / 0
25.12.2012, 02:14
    #38091384
Lord British
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle и .net
Вангую другие вопросы. Ответы на них: VIEW, INSTEAD OF TRIGGERS.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Oracle и .net / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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