Посмотрите на драйверы Oracle 11g odp.net, которые позволяют передавать типы Oracle.
Есть несколько примеров на сайте Oracle, а также в каталоге установки вашего дома 11g ...
C: \ Oracle \ Ora11g_Home \ odp.net \ Samples \ 2.x \ UDT
Мне пришлось откатить тип объекта в этом примере.
У тебя будет что-то вроде этого ...
OracleParameter p_params = new OracleParameter();
p_params.ParameterName = "params";
p_params.OracleDbType = OracleDbType.Object;
p_params.Direction = ParameterDirection.InputOutput;
// Note: The UdtTypeName is case-senstive
p_params.UdtTypeName = "SCHEMA_NAME.TYPE_NAME";
Вам также нужен класс, который определяет ваш тип.
Выполните поиск "OracleObjectMappingAttribute" и "IOracleCustomTypeFactory".
Примечание: я использую драйверы 11g odp.net для работы с базой 10g. Вам просто нужно сослаться на следующие.dll в вашем проекте: oci.dll, oraociicus11.dll и OraOps11w.dll. Вы уже должны ссылаться на Oracle.DataAccess.dll (просто убедитесь, что вы начали использовать версию 11g).