Есть ли способ использовать пользовательские типы Oracle (UDT) и пользовательские типы .NET в Oracle 10G? - PullRequest
0 голосов
/ 03 января 2019

Моя цель - найти лучший способ передать сложный объект из .net в хранимую процедуру Oracle в качестве входного параметра. Например : В базе данных Предположим, у нас есть два мастер таблицы и детали лайк Мастер стол:

Customers
(Id Number, Name VARCHAR2(256 BYTE), Age Number) 

Подробная таблица: заказы (Идентификационный номер, Номер идентификатора клиента, Сумма номера)

UDT клиентов:

CREATE OR REPLACE TYPE 
CUSTOMER_TYPE 
AS OBJECT 
(Name VARCHAR2(256 BYTE), Age NUMBER(38, 0)) NOT FINAL;

Заказы UDT:

CREATE OR REPLACE TYPE 
Orders_TYPE 
AS OBJECT 
(CustomerId NUMBER(38, 0), Amount NUMBER(38, 0)) NOT FINAL;

Деталь UDT:

CREATE OR REPLACE TYPE 
ORDERS_COLLECTION_TYPE 
AS TABLE
OF Orders_TYPE 

Порядок вставки:

CREATE OR REPLACE PROCEDURE INSERT(PARAM IN OUT  ORDERS_COLLECTION_TYPE)
IS
BEGIN
Insert  ORDERS_COLLECTION_TYPE into Orders table;
END;

Версия базы данных: Oracle Database 10g Enterprise Edition, выпуск 10.2.0.4.0 - 64bi

В .Net использование Oracle.ManagedDataAccess.Client; //OracleDbType.Array не поддерживается
версия: 4.121.2.0 используя (OracleParameter p1 = новый OracleParameter ("", OracleDbType.Array, ParameterDirection.InputOutput)) { p1.UdtTypeName = "ORDERS_COLLECTION_TYPE"; p1.Value = arrOrders; cmd.Parameters.Add (р1); cmd.ExecuteNonQuery (); } * * Тысяча двадцать-один

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