Похоже, что в C # может быть команда Oracle с выходным параметром, однако, если это так, я не уверен, как ее подключить.
Команда:
declare
type new_rows is table of Table1%rowtype;
newRows new_rows;
type newKeys_rec is record (col1 number, col2 number);
type newKeys_type is table of newKeys_rec;
newKeys newKeys_type;
begin
select *
bulk collect into newRows
from Table2;
forall idx in 1..newRows.count()
insert into Table1
values newRows(idx)
returning Table1.col1, Table1.col2 bulk collect into newKeys;
end;
Параметр команды в sql:
Parameters.Add(new OracleParameter
{
ParameterName = "newKeys",
ObjectTypeName = "newKeys_type",
OracleDbType = OracleDbType.Object,
Direction = ParameterDirection.Output
});
Ошибка:
OCI-22303: type ""."NEWKEYS_TYPE" not found
ОБНОВЛЕНИЕ: Следуя приведенным ниже ответам:
1) Объявите тип в схеме:
Создайте тип Schema.newKeys_object в качестве объекта (номер col1, номер Col2)
Создайте тип Schema.newKeys_type в виде таблицы Schema.type1_object
2) В параметре Oracle:
Parameters.Add(new OracleParameter
{
ParameterName = "newKeys",
ObjectTypeName = "newKeys_type",
OracleDbType = OracleDbType.Table,
Direction = ParameterDirection.ReturnValue
});