2016-02-01 8 views
0

Я пытаюсь выяснить, как определить и получить параметр Oracle OUTPUT, который является таблицей UDT (объекта) в C#.Как определить и получить таблицу выходных параметров Oracle UDT (объекта) в C#

В частности, я использую C#, .NET 4.0 и Oracle.ManagedDataAccess

Я не могу показаться, чтобы найти правильный пример для этой конкретной проблемы - хотя я нашел множество подобных предложений и решений, в которых тип возвращаемого значения простой OracleDBType, а не таблица объекта UDT.

Предполагая следующий пример:

create or replace TYPE tsv 
as 
object (valuedate date, value binary_double, code number); 

create or replace TYPE tsv_array 
as table of tsv; 

create or replace procedure sp_example (p_values OUT tsv_array , p_id IN  Varchar2) 
is 
    l_values tsv_array; 
begin 
... 
select field1, field2, field3 
    bulk collect 
    into l_values 
    from table(some_stuff); 

    p_values := l_values; 
end; 

Я думал, что на основе некоторых примеров, которые могут быть OacleDbType.Object использования, но это, кажется, не быть частью Oracle.ManagedDataAccess чего я использую.

Может кто-нибудь помочь просветить меня о том, как я буду;

1 - правильно определить выходной параметр (например, новый OracleParameter ("p_values", OracleDbType, ...)

2 -.? Доступа/процесс возвращаемая таблица UDT выходного PARAM

Ваша помощь наиболее оценена!

ответ

0

Управляемая версия ODAC не поддерживает UDT. Вы должны использовать либо неуправляемую версию, либо драйвер сторонней версии Oracle, такой как Devart, у которого, кстати, гораздо более интеллектуальная поддержка UDT, t необходимо заранее создать конкретный класс для каждого UDT.