Добрый день всем гуру!
Есть такая проблема. Нужно с клиента Delphi (Embarcadero 10.1 Berlin) передать в БД (Oracle 18c) через компоненты ODAC (версия 10.3.9) таблицу с данными.
Покопавшись на просторах сети решил использовать компонент TOraNestedTable.
На сервере создал два типа:
CREATE OR REPLACE TYPE REE_REC as object
(
--тут 45 полей, не буду все перечислять
);
CREATE OR REPLACE TYPE REE_TAB AS TABLE OF REE_REC
Первый тип полностью соответствует структуре таблицы CLREE, в которую нужно будет вносить передаваемые данные.
Данные заношу так:
procedure TfrmCreateLoadFiles.UploadFile;
var
LNestTable: TOraNestedTable;
begin
--
try
LNestTable := TOraNestedTable.Create(nil);
LNestTable.Table := TOraNestTable.Create
(TOraType.Create(DefSession.OCISvcCtx, 'REE_TAB'));
LNestTable.Open;
--
LNestTable.Append;
LNestTable.FieldByName('FKEY').Value := FCurFileKey;
LNestTable.FieldByName('LINE_N').Value := LLineN;
LInd := 0;
while Pos(chr(9), LText) > 0 do
begin
LVal := Copy(LText, 1, Pos(chr(9), LText) - 1);
LNestTable.FieldByName(FRealColumnNames[LInd]).Value := Trim(LVal);
Inc(LInd);
Delete(LText, 1, Pos(chr(9), LText));
end;
LNestTable.FieldByName('F_PR').Value := '-';
LNestTable.FieldByName('FIL').Value := FFileType;
LNestTable.Post; //вот тут при фиксации значения всех полей записи превращаются в Null
--
NewImportFile_1061(LNestTable);
--
finally
FreeAndNil(LNestTable);
end;
--
Суть проблемы в том, что при вызове LNestTable.Post значения всех столбцов превращается в Null.
После LNestTable.Append ставил LNestTable.Edit, но сути это не поменяло.
Посему вопрос: как мне записать данные в LNestTable?