Как мы можем передать определенный пользователем тип или тип таблицы в хранимую процедуру, используя сначала код структуры Entity?
Я использую: -
- C # V7.2
- Entity Framework V6 (сначала код)
- База данных Oracle 11G.
- Visual Studio 2017
Следующий код для создания ОБЪЕКТА в базе данных.
CREATE or replace TYPE PRT_TEST_typ AS OBJECT
( TEST_SER NUMBER(9),
TEST_DESC VARCHAR2(100)
);
Следующий код для создания таблицы типов
CREATE or replace TYPE PRT_TEST_tab AS TABLE OF PRT_TEST_typ
Следующий код для создания таблицы.
CREATE TABLE "PRT_TEST"
( "TEST_SER" NUMBER(9,0),
"TEST_DESC" VARCHAR2(100 BYTE)
) ;
Следующий код для созданияхранимая процедура для вставки входного параметра PRT_TEST_tab в таблицу.
CREATE or replace PROCEDURE PRC_TEST
( P_PRT_TEST_tab IN PRT_TEST_tab,
P_XX IN VARCHAR2 )
IS
P_RESULT_CODE NUMBER ;
P_RESULT_TEXT VARCHAR2(400);
BEGIN
FOR I IN P_PRT_TEST_tab.FIRST .. P_PRT_TEST_tab.LAST LOOP
INSERT INTO PRT_TEST ( TEST_SER , TEST_DESC )
VALUES ( P_PRT_TEST_tab(I).TEST_SER , P_PRT_TEST_tab(I).TEST_DESC);
END LOOP;
COMMIT;
END;
это моя попытка сделать это
List<Test1> lis = new List<Test1>();
lis.Add(new Test1 { TEST_SER = 123, TEST_DESC = "a1" });
lis.Add(new Test1 { TEST_SER = 456, TEST_DESC = "b2" });
var P1 = new OracleParameter("P1", OracleDbType.RefCursor, lis, ParameterDirection.Input);
var P2 = new OracleParameter("P2", OracleDbType.NVarchar2, p1, ParameterDirection.Input);
var sss = _context.Database.ExecuteSqlCommand(
"BEGIN PRC_TEST(" +
":P1, " +
":P2 " +
"); " +
"END;",
P1,
P2
);