В plsql я хочу вставить около 1 миллиона строк из промежуточной таблицы в фактическую таблицу, и в настоящее время я использую для этого курсор для цикла. Но я понимаю, что есть способ ускорить это с помощью массовой вставки для всей команды, но я боюсь в разделе устранения дубликатов. Может у пожалуйста, помогите, чтобы преобразовать код, приведенный ниже, чтобы использовать насыпной собиратьBULK COLLECT INSERT и после проверки дубликатов
DECLARE
CURSOR c1 is
select
ps_item_code,
item_code,
cons_date,
shop_code,
dept_code,
class_code,
sub_class_code,
supl_code,
plu_price,
sal_qty,
sal_val_in_lc,
disc_val_in_lc,
tax_val_in_lc,
odept, oclass, osubclass
from
sales_stage;
BEGIN
FOR i in c1 loop
BEGIN
my_cnt := 0;
select count(1) into my_cnt from hps_ps_terr_sales_1415
where item_code=i.item_code and cons_date=i.cons_date and shop_code=i.shop_code and sal_qty=i.sal_qty and supl_code=i.supl_code;
IF my_cnt = 0 THEN
BEGIN
insert into sales_actual
(
ps_item_code,
item_code,
cons_date,
shop_code,
dept_code,
class_code,
sub_class_code,
supl_code,
plu_price,
sal_qty,
sal_val_in_lc,
disc_val_in_lc,
tax_val_in_lc, odept, oclass, osubclass,
\t \t \t dept, class, subclass
)
values
(
i.terr_code,
i.ps_item_code,
i.item_code,
i.cons_date,
i.shop_code,
i.dept_code,
i.class_code,
i.sub_class_code,
i.supl_code,
i.plu_price,
i.sal_qty,
i.sal_val_in_lc,
i.disc_val_in_lc,
i.tax_val_in_lc, i.odept, i.oclass, i.osubclass,
i.dept_code,
i.class_code,
i.sub_class_code
);
END;
END IF;
END;
END LOOP;
COMMIT;
END;
спасибо брату ... была ошибка ввода в данном примере кода с моей стороны..hps_ps_terr_sales_1415 ---> sales_actual .... так же, как это произведет это? –