Вы находитесь на странице: 1из 2

BEGIN DECLARE

v_sql_stmt VARCHAR2 (2000) := '';


TYPE refdesigcurtype IS REF CURSOR;
c_ref_desig refdesigcurtype;
c_rec_ref_desg VARCHAR2 (4000) := '';
c_rec_comp_seq_id VARCHAR2 (2000) := '';
v_ref_desg VARCHAR2 (4000) := '';
v_old_comp_seq_id NUMBER := '';
v_new_comp_seq_id NUMBER := '';
v_row_count NUMBER := 1;
BEGIN
BEGIN
v_sql_stmt := 'CREATE TABLE DWH_BOM_REF_DESG_D2162298 AS';
v_sql_stmt :=
v_sql_stmt || ' SELECT bic.component_sequence_id comp_seq_id,';
v_sql_stmt :=
v_sql_stmt || ' brd.component_reference_designator ref_desg';
v_sql_stmt :=
v_sql_stmt || ' FROM bom.bom_components_b@TJDS5I.WORLD bic,';
v_sql_stmt :=
v_sql_stmt || ' bom.bom_reference_designators@TJDS5I.WORLD
brd';
v_sql_stmt :=
v_sql_stmt
|| ' WHERE bic.component_sequence_id = brd.component_sequence_id';
v_sql_stmt := v_sql_stmt || ' AND NVL (brd.acd_type, 1) <> 3';
EXECUTE IMMEDIATE v_sql_stmt;
END;
BEGIN
OPEN c_ref_desig FOR 'SELECT comp_seq_id, ref_desg FROM
DWH_BOM_REF_DESG_D2162298 ORDER BY 1, 2';
LOOP
FETCH c_ref_desig
INTO c_rec_comp_seq_id, c_rec_ref_desg;
EXIT WHEN c_ref_desig%NOTFOUND;
v_new_comp_seq_id := c_rec_comp_seq_id;
IF v_old_comp_seq_id IS NULL
THEN
v_old_comp_seq_id := c_rec_comp_seq_id;
END IF;
IF v_old_comp_seq_id = v_new_comp_seq_id
THEN
IF v_ref_desg IS NULL
THEN
v_ref_desg := c_rec_ref_desg;
ELSE
v_ref_desg := v_ref_desg || ',' || c_rec_ref_desg;
END IF;
ELSE
INSERT INTO DWH_BOM_REF_DESG_D
(reference_desgs_key,
component_reference_designator
)
VALUES (v_old_comp_seq_id,
v_ref_desg
);
v_ref_desg := c_rec_ref_desg;
v_row_count := v_row_count + 1;
END IF;
v_old_comp_seq_id := c_rec_comp_seq_id;
END LOOP;
INSERT INTO DWH_BOM_REF_DESG_D
(reference_desgs_key,
component_reference_designator
)
VALUES (v_old_comp_seq_id,
v_ref_desg
);

DP_LOGMSG (2162298, 'I', v_row_count || ' Rows Inserted');


COMMIT;
END;
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE DWH_BOM_REF_DESG_D2162298';
END;
END; END;

Вам также может понравиться