Доброго дня господа !
Имею механизмы интрефейса ODCIIndex - в частности пакетная встака данных (НЕ ОДНА ЗАПИСЬ !!!)
SQL код:
static function OdciIndexInsert(ia sys.ODCIIndexInfo,RidList sys.ODCIRidList,NewValList Sys.Odcivarchar2list,env sys.ODCIEnv) Return Number
--static function OdciIndexInsert(ia sys.ODCIIndexInfo,RidList sys.ODCIRidList,NewValList PFP.SV_RccKeyList,env sys.ODCIEnv) Return Number
is
begin
declare
i Integer:=0;
begin
i:=To_Number(RegExp_Substr(NewValList(1),'[^|]+',1,2));
dbms_output.put_line('Insert array='||RidList.Count||' '||I);
end;
return ODCIConst.Success;
end;
Здесь необходимо выяснить
1.как передать объектный-пользовательский тип
(набор полей разных базовых типов - Varchar2, Date, Number)
create or replace type SV_RccKey authid current_user as object
(
Deal Varchar2(4000)
Drep Date,
Keys Number
);
2.как его задекларировать в типе индекса - у меня получаються только базовые типы Sys.Odcivarchar2list,Sys.OdciDateList и т.д.
могут работать в режиме пакетной вставки.
create or replace indextype Sv_RccDelayType for Sv_RccDelayValue(Varchar2) using Sv_RccDelay with array dml(number,Sys.Odcivarchar2list);
Хотел бы так
create or replace indextype Sv_RccDelayType for Sv_RccDelayValue(Varchar2) using Sv_RccDelay with array dml(number,
PFP.SV_RccKeyList);
3.Как в момент пакетной вставки словить последную запись (последний пакет) - хочу писать в промежуточный буфер и
делать одну транзакцию на вставку полного пула записей.
Пуль записей это 1-1.5 млн.
begin
i:=To_Number(RegExp_Substr(NewValList(1),'[^|]+',1,2));
dbms_output.put_line('Insert array='||RidList.Count||' '||I);
-- Как здесь узнать что все записи профетчины и эта запись последная
end;
4.Где и чем регулируються промежуточные лимиты массива - у меня это 200 и 55 и так по циклу + все остальные записи
Почему не 200 + 200 + 200 + остальное , откуда и зачем 55
dbms_output.put_line('Insert array='||RidList.Count||' '||I);
Код могу приложить по требованию, но если не затрагивали эту тему вряд-ли этот код будет полезен.
Заранее благодарен !