Serge_Wolf
Дата: 10.12.2007 15:47:51
Здравствуйте!
Есть необходимость после выборки данных с помощью курсора, помещать (insert-ом) данные в Oracle-ую таблицу. Но выдает ошибку. Помогите, please. Ругается на INSERT
CREATE OR REPLACE PROCEDURE PREPARE_UNLOAD
IS
CURSOR cFirstGroup IS
select d.char_val1 bl_series, a.num bl_number,
a.act_dt bl_date, h.full_name bl_supplier
from DEVMGR.bnp_blank_num a
left outer join insr_refs b on a.state_id=b.id
left outer join bnp_blanks c on a.order_num=c.order_num
left outer join insr_refs d on c.ser_id=d.id
left outer join insr_refs e on c.vid_id=e.id
left outer join bnp_mat f on f.order_num=c.order_num
left outer join bnp_order_material g on g.id=f.omat_id
left outer join company h on g.comp_no=h.no
order by b.char_val1;
rFirstGroup cFirstGroup%ROWTYPE;
BEGIN
EXECUTE IMMEDIATE 'TRUNCATE TABLE DEVMGR.UNLOAD_BLANKS';
FOR rFirstGroup IN cFirstGroup LOOP
-- TRUNCATE отрабатывает правильно, а INSERT нет (выдает: Употребление столбца здесь недопустимо)
EXECUTE IMMEDIATE 'INSERT INTO DEVMGR.UNLOAD_BLANKS
(id, mid, bl_series, bl_number, bl_type, bl_state, bl_contractnr, bl_insurer, bl_supplier)
VALUES (SEQ1_UNLOAD_BLANKS.NEXTVAL, ''1'', rFirstGroup.bl_series, rFirstGroup.bl_number, rFirstGroup.bl_type,
rFirstGroup.bl_state, ''00900000'', rFirstGroup.bl_date, rFirstGroup.bl_supplier)';
END LOOP;
END PREPARE_UNLOAD;
SimonInBlues
Дата: 10.12.2007 21:21:11
лажа какая-то....
зачем тебе курсор открывать и в нем делать построчный инсерт? делаешь сразу инсерт в нужную таблицу по тому селекту, который указан в курсоре, и все. и никакого динамического скл (разьве только для truncate)