Выходной параметр для TABLE OF VARCHAR2 Oracle odp.net - PullRequest
1 голос
/ 13 ноября 2009

У меня есть этот тип:

TYPE tipo_TableVarchar2 IS TABLE OF VARCHAR2(1000) INDEX BY BINARY_INTEGER;

и процедура get_array (p_arr out TableVarchar2 ) - это ...

OracleParameter param = new OracleParameter();
param.OracleDbType = OracleDbType.Varchar2;
param.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
param.ParameterDirection = ParameterDirection.Output;

cm.Parameters.Add(param);

Как использовать вывод OracleParameter для получения значения?

1 Ответ

1 голос
/ 17 ноября 2009

Посмотрите на драйверы 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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...