程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> PL/SQL存儲過程-中國電力基本檔案存儲功能-僅供參考,pl存儲過程

PL/SQL存儲過程-中國電力基本檔案存儲功能-僅供參考,pl存儲過程

編輯:Oracle教程

PL/SQL存儲過程-中國電力基本檔案存儲功能-僅供參考,pl存儲過程


CREATE OR REPLACE PACKAGE BODY BASE_INFO AS   PROCEDURE insert_lapc(lapc In lapc_array) AS     v_max number;     v_result number;     v_status number;   BEGIN     delete from TMP_LAPC;     v_result := -10;     --數據插入臨時表     FOR i IN lapc.FIRST .. lapc.LAST LOOP       BEGIN         insert into tmp_lapc           (lapc_id,            customer_id,            lapc_name,            sort,            lapc_addr,            tel,            cons_sort_code,            ms_mode,            trade_code,            volt_code,            lode_attr_code,            contract_cap,            status_code,            vip_code,            line_id,            powersupplyofficeid,            townid)         values           (lapc(i).lapc_id,            lapc(i).customer_id,            lapc(i).lapc_name,            lapc(i).sort,            lapc(i).lapc_addr,            lapc(i).tel,            lapc(i).cons_sort_code,            lapc(i).ms_mode,            lapc(i).trade_code,            lapc(i).volt_code,            lapc(i).lode_attr_code,            lapc(i).contract_cap,            lapc(i).status_code,            lapc(i).vip_code,            lapc(i).line_id,            lapc(i).powersupplyofficeid,            lapc(i).townid);       END;     END LOOP;     v_result := -20;     --代碼轉換     update tmp_lapc a        set a.line_id_new =            (select b.line_id               from g_line b              where a.line_id = b.guid                and rownum = 1);     update tmp_lapc a        set a.townid_new =            (select b.org_no               from O_ORG b              where a.townid = b.guid                and rownum = 1);     update tmp_lapc a        set a.group_id =            (select b.org_no               from O_ORG b              where a.powersupplyofficeid = b.guid                and rownum = 1);     update tmp_lapc a        set a.consid =            (select b.cons_id               from C_CONS b              where a.lapc_id = b.guid                and rownum = 1);     v_result := -30;     -- delete from tmp_lapc a where a.townid_new is null;     -- delete from tmp_lapc a where a.line_id_new is null;     --更新正式表     update C_CONS a        set (a.cons_id,             a.cons_name,             a.cons_no,             a.cons_addr,             a.tel1,             a.CONS_SORT_CODE,             a.meas_mode,             a.trade_code,             a.volt_code,             a.lode_attr_code,             a.contract_cap,             a.status_code,             a.vip_code,             a.line_id,             a.org_no,             a.area_code,             a.savedatetime,             a.power_type_code) =            (select b.consid,                    b.lapc_name,                    b.customer_id,                    b.lapc_addr,                    b.tel,                    '01',                    b.MS_MODE,                    b.trade_code,                    b.volt_code,                    b.lode_attr_code,                    b.contract_cap,                    b.status_code,                    b.vip_code,                    b.line_id_new,                    b.group_id,                    b.townid_new,                    sysdate,                    b.cons_sort_code               from tmp_lapc b              where a.cons_id = b.consid                and rownum = 1)      where exists (select 1 from tmp_lapc b where a.cons_id = b.consid);     v_result := -40;     --刪除更新完的數據     delete from tmp_lapc a where a.consid is not null;     --插入正式表(只支持單線程)     select nvl(max(cons_id), 0) into v_max from c_cons;     insert into c_cons a       (a.cons_id,        a.cons_name,        a.cons_no,        a.cons_addr,        a.tel1,        a.CONS_SORT_CODE,        a.meas_mode,        a.trade_code,        a.volt_code,        a.lode_attr_code,        a.contract_cap,        a.status_code,        a.vip_code,        a.line_id,        a.org_no,        a.area_code,        a.guid,        a.savedatetime)       select v_max + rownum,              b.lapc_name,              b.customer_id,              b.lapc_addr,              b.tel,              b.cons_sort_code,              b.MS_MODE,              b.trade_code,              b.volt_code,              b.lode_attr_code,              b.contract_cap,              b.status_code,              b.vip_code,              b.line_id_new,              b.group_id,              b.townid_new,              b.lapc_id,              sysdate         from tmp_lapc b;     commit;   EXCEPTION     WHEN OTHERS THEN       begin         ROLLBACK;         v_status := ERROR_LOG(v_result, SQLCODE, SQLERRM, 'insert_lapc');       end;   END insert_lapc;     PROCEDURE insert_amsm(amsm In amsm_array) AS     v_max number;     v_result number;     v_status number;   BEGIN     delete from TMP_AMSM;     --數據插入臨時表     v_result := -10;     FOR i IN amsm.FIRST .. amsm.LAST LOOP       BEGIN         insert into tmp_amsm           (mped_id,            mped_name,            volt_code,            cons_id,            tgid,            subs_id,            mp_type,            trade_code,            side_code,            switch_no,            total_flag,            meas_mode,            wiring_mode,            m_mped_id,            status_code,            pt_value,            ct_value,            t_factor,            mp_calc_mode,            cons_mp_calc_mode,            powersupplyofficeid,            groupid)         values           (amsm(i).mped_id,            amsm(i) . mped_name,            amsm(i).volt_code,            amsm(i).cons_id,            amsm(i).tgid,            amsm(i).subs_id,            decode(amsm(i).mp_type,'02','03','03','02',amsm(i).mp_type),            amsm(i).trade_code,            amsm(i).side_code,            amsm(i).switch_no,            amsm(i).total_flag,            amsm(i).meas_mode,            amsm(i).wiring_mode,            amsm(i).m_mped_id,            amsm(i).status_code,            amsm(i).pt_value,            amsm(i).ct_value,            amsm(i).t_factor,            amsm(i).mp_calc_mode,            amsm(i).cons_mp_calc_mode,            amsm(i).powersupplyofficeid,            amsm(i).groupid);       END;     END LOOP;     --代碼轉換     v_result := -20;     update tmp_amsm a        set a.SUBS_ID_NEW =            (select b.subs_id               from g_subs b              where b.guid = a.subs_id                and rownum = 1);       update tmp_amsm a        set a.mped_id_new =            (select b.mped_id               from p_mped b              where b.guid = a.mped_id                and rownum = 1);       update tmp_amsm a        set a.m_mped_id_new =            (select b.mped_id               from p_mped b              where b.guid = a.m_mped_id                and rownum = 1);       update tmp_amsm a        set a.org_no =            (select b.org_no               from o_org b              where b.guid = a.powersupplyofficeid                and rownum = 1);     update tmp_amsm a        set a.area_code =            (select b.org_no               from o_org b              where b.guid = a.groupid                and rownum = 1);       update tmp_amsm a        set a.cons_id_new =            (select b.cons_id               from c_cons b              where b.guid = a.cons_id                and rownum = 1);     v_result := -30;     --更新正式表     update P_MPED a        set (MPED_NAME,             CT_VALUE,             PT_VALUE,             M_MPED_ID,             VOLT_TYPE,             SIDE_CODE,             SUBS_ID,             STATUS_CODE,             CONS_ID,             MP_TYPE,             TRADE_CODE,             SWITCH_NO,             MAIN_FLAG,             MEAS_MODE,             WIRING_MODE,             MP_CALC_MODE,             MP_CALC_TYPE,             ORG_NO,             AREA_CODE,             SAVEDATETIME,             Mped_Prop) =            (select b.mped_name,                    b.ct_value,                    b.pt_value,                    b.m_mped_id_new,                    b.volt_code,                    b.side_code,                    b.subs_id_new,                    b.status_code,                    b.cons_id_new,                    b.mp_type,                    b.trade_code,                    b.switch_no,                    b.total_flag,                    b.meas_mode,                    b.wiring_mode,                    b.mp_calc_mode,                    b.CONS_MP_CALC_MODE,                    b.org_no,                    b.area_code,                    sysdate,                    '02'               from tmp_amsm b              where a.mped_id = b.mped_id_new                and rownum = 1)      where exists      (select 1 from tmp_amsm b where a.mped_id = b.mped_id_new);     --刪除更新完的數據     v_result := -40;     delete from tmp_amsm a where a.mped_id_new is not null;     --插入正式表(只支持單線程)     select nvl(max(a.mped_id), 0) into v_max from p_mped a;     insert into P_MPED a       (MPED_ID,        MPED_NAME,        CT_VALUE,        PT_VALUE,        M_MPED_ID,        VOLT_TYPE,        SIDE_CODE,        SUBS_ID,        STATUS_CODE,        CONS_ID,        MP_TYPE,        TRADE_CODE,        SWITCH_NO,        MAIN_FLAG,        MEAS_MODE,        WIRING_MODE,        MP_CALC_MODE,        MP_CALC_TYPE,        ORG_NO,        AREA_CODE,        SAVEDATETIME,        guid,        Mped_Prop)       select v_max + rownum,              b.mped_name,              b.ct_value,              b.pt_value,              b.m_mped_id_new,              b.volt_code,              b.side_code,              b.subs_id_new,              b.status_code,              b.cons_id_new,              b.mp_type,              b.trade_code,              b.switch_no,              b.total_flag,              b.meas_mode,              b.wiring_mode,              b.mp_calc_mode,              b.CONS_MP_CALC_MODE,              b.org_no,              b.area_code,              sysdate,              b.mped_id,              '02'         from tmp_amsm b;       commit;   EXCEPTION     WHEN OTHERS THEN       begin         ROLLBACK;         v_status := ERROR_LOG(v_result, SQLCODE, SQLERRM, 'insert_amsm');       end;   END insert_amsm;     PROCEDURE insert_amso(amso In amso_array) AS     v_max number;     v_result number;     v_status number;   BEGIN     delete from TMP_AMSO;     v_result := -10;     --數據插入臨時表     FOR i IN amso.FIRST .. amso.LAST LOOP       BEGIN         insert into TMP_AMSO           (POWERSUPPLYOFFICEID, POWERSUPPLYOFFICENAME, COUNTYID)         values           (amso(i).POWERSUPPLYOFFICEID,            amso(i).POWERSUPPLYOFFICENAME,            amso(i).COUNTYID);       END;     END LOOP;     v_result := -20;     --代碼轉換     update TMP_AMSO a        set a.org_no =            (select b.org_no               from o_org b              where b.guid = a.powersupplyofficeid                and rownum = 1);       update TMP_AMSO a        set a.p_org_no =            (select b.org_no               from o_org b              where b.guid = a.countyid                and rownum = 1);     v_result := -30;     --更新正式表     update o_org a        set (a.org_name, a.p_org_no, a.org_type, a.savedatetime) =            (select b.powersupplyofficename, b.p_org_no, '06', sysdate               from TMP_AMSO b              where a.org_no = b.org_no)      where exists (select 1 from TMP_AMSO b where a.org_no = b.org_no);     update o_org a        set a.org_path =            (select b.org_path || '\' || a.org_no               from o_org b              where a.p_org_no = b.org_no)      where exists (select 1 from TMP_AMSO b where a.org_no = b.org_no);     v_result := -40;     --刪除更新完的數據     delete from TMP_AMSO a where a.org_no is not null;     --插入正式表(只支持單線程)     select nvl(max(to_number(a.org_no)), 0) into v_max from o_org a;     insert into o_org a       (a.org_no,        a.org_name,        a.p_org_no,        a.org_type,        a.savedatetime,        a.guid)       (select v_max + rownum,               b.powersupplyofficename,               b.p_org_no,               '06',               sysdate,               b.powersupplyofficeid          from TMP_AMSO b);       update o_org a        set a.org_path =            (select b.org_path || '\' || a.org_no               from o_org b              where a.p_org_no = b.org_no)      where exists      (select 1 from TMP_AMSO b where a.GUID = b.powersupplyofficeid);       commit;   EXCEPTION     WHEN OTHERS THEN       begin         ROLLBACK;         v_status := ERROR_LOG(v_result, SQLCODE, SQLERRM, 'insert_amso');       end;   END insert_amso;     PROCEDURE insert_tmrs(tmrs In tmrs_array) AS     v_max number;     --v_str varchar2(1000);     v_result number;     v_status number;   BEGIN     delete from tmp_tmrs;     v_result := -10;     --數據插入臨時表     FOR i IN tmrs.FIRST .. tmrs.LAST LOOP       BEGIN         insert into tmp_tmrs           (stationid,            stationname,            stationaddress,            voltagegrade,            zoneid,            status,            stationtype,            prop,            losstarget,            theoryloss,            product_company_id)         values           (tmrs(i).stationid,            tmrs(i).stationname,            tmrs(i).stationaddress,            tmrs(i).voltagegrade,            tmrs(i).zoneid,            tmrs(i).status,            tmrs(i).stationtype,            tmrs(i).prop,            tmrs(i).losstarget,            tmrs(i).theoryloss,            tmrs(i).product_company_id);       END;     END LOOP;     v_result := -20;     --代碼轉換     update tmp_tmrs a        set a.org_no =            (select b.org_no               from o_org b              where b.guid = a.zoneid                and rownum = 1);       update tmp_tmrs a        set a.area_code =            (select b.org_no               from o_org b              where b.guid = a.groupid                and rownum = 1);       update tmp_tmrs a        set a.subs_id =            (select b.subs_id               from g_subs b              where b.guid = a.stationid                and rownum = 1);     v_result := -30;     --更新正式表     update G_SUBS a        set (SUBS_NAME,             SUBS_ADDR,             ORG_NO,             VOLT_CODE,             RUN_STATUS_CODE,             SUBS_TYPE,             SUBS_PROP,             SAVEDATETIME) =            (select b.stationname,                    b.stationaddress,                    b.org_no,                    b.voltagegrade,                    b.status,                    b.stationtype,                    b.prop,                    sysdate               from tmp_tmrs b              where a.subs_id = b.subs_id                and rownum = 1)      where exists (select 1 from tmp_tmrs b where a.subs_id = b.subs_id);     v_result := -40;     --刪除更新完的數據     delete from tmp_tmrs a where a.subs_id is not null;     --插入正式表(只支持單線程)     select nvl(max(a.subs_id), 0) into v_max from G_SUBS a;     insert into G_SUBS a       (SUBS_ID,        SUBS_NAME,        SUBS_ADDR,        ORG_NO,        VOLT_CODE,        RUN_STATUS_CODE,        SUBS_TYPE,        SUBS_PROP,        SAVEDATETIME,        GUID)       (select v_max + rownum,               b.stationname,               b.stationaddress,               b.org_no,               b.voltagegrade,               b.status,               b.stationtype,               b.prop,               sysdate,               b.stationid          from tmp_tmrs b);       commit;   EXCEPTION     WHEN OTHERS THEN       begin         ROLLBACK;         v_status := ERROR_LOG(v_result, SQLCODE, SQLERRM, 'insert_tmrs');       end;   END insert_tmrs;     PROCEDURE insert_amsl(amsl In amsl_array) AS     v_max number;     v_max1 number;     v_result number;     v_status number;   BEGIN     delete from tmp_amsl;     v_result := -10;     --數據插入臨時表     FOR i IN amsl.FIRST .. amsl.LAST LOOP       BEGIN         insert into tmp_amsl           (lineid,            linename,            linetype,            voltagegrade,            stationid,            losstarget,            theoryloss,            statusflag,            zoneid,            groupid)         values           (amsl(i).lineid,            amsl(i).linename,            amsl(i).linetype,            amsl(i).voltagegrade,            amsl(i).stationid,            amsl(i).losstarget,            amsl(i).theoryloss,            amsl(i).statusflag,            amsl(i).zoneid,            amsl(i).groupid);       END;     END LOOP;     v_result := -20;     --代碼轉換     update tmp_amsl a        set a.org_no =            (select b.org_no               from o_org b              where b.guid = a.zoneid                and rownum = 1);       update tmp_amsl a        set a.area_code =            (select b.org_no               from o_org b              where b.guid = a.groupid                and rownum = 1);       update tmp_amsl a        set a.subs_id =            (select b.subs_id               from g_subs b              where b.guid = a.stationid                and rownum = 1);       update tmp_amsl a        set a.line_id =            (select b.line_id               from g_line b              where b.guid = a.lineid                and rownum = 1);     v_result := -30;     --更新正式表     update G_LINE a        set (LINE_NAME,             LINE_TYPE,             VOLT_CODE,             RUN_STATUS_CODE,             ORG_NO,             AREA_CODE,             SAVEDATETIME) =            (select b.linename,                    decode(b.linetype, '1', '01', '2', '02', '03'),                    b.voltagegrade,                    b.statusflag,                    b.org_no,                    b.area_code,                    sysdate               from tmp_amsl b              where a.line_id = b.line_id                and rownum = 1)      where exists (select 1 from tmp_amsl b where a.line_id = b.line_id);       delete from g_subs_line_rela a      where exists (select 1               from tmp_amsl b              where a.line_id = b.line_id);       /* update g_subs_line_rela a       set (a.line_id, a.subs_id, a.savedatetime) =           (select b.line_id, b.subs_id, sysdate              from tmp_amsl b             where a.line_id = b.line_id               and a.subs_id = b.subs_id               and rownum = 1)     where exists (select 1              from tmp_amsl b             where a.line_id = b.line_id               and a.subs_id = b.subs_id);*/     select nvl(max(a.rela_id), 0) into v_max1 from g_subs_line_rela a;       insert into g_subs_line_rela       (rela_id,        line_id,        subs_id,        in_out_flag,        rela_flag,        run_status_code,        savedatetime)       (select v_max1 + rownum, b.line_id, b.subs_id, '', '', '01', sysdate          from tmp_amsl b);     v_result := -40;     --刪除更新完的數據     delete from tmp_amsl a where a.line_id is not null;     --插入正式表(只支持單線程)     select nvl(max(a.line_id), 0) into v_max from g_line a;     select nvl(max(a.rela_id), 0) into v_max1 from g_subs_line_rela a;       insert into g_line a       (line_id,        LINE_NAME,        LINE_TYPE,        VOLT_CODE,        RUN_STATUS_CODE,        ORG_NO,        AREA_CODE,        SAVEDATETIME,        GUID)       (select v_max + rownum,               b.linename,               decode(b.linetype, '1', '01', '2', '02', '03'),               b.voltagegrade,               b.statusflag,               b.org_no,               b.area_code,               sysdate,               b.lineid          from tmp_amsl b);     update tmp_amsl a        set a.line_id =            (select b.line_id               from g_line b              where b.guid = a.lineid                and rownum = 1);     insert into g_subs_line_rela       (rela_id,        line_id,        subs_id,        in_out_flag,        rela_flag,        run_status_code,        savedatetime)       (select v_max1 + rownum, b.line_id, b.subs_id, '', '', '01', sysdate          from tmp_amsl b);     commit;   EXCEPTION     WHEN OTHERS THEN       begin         ROLLBACK;         v_status := ERROR_LOG(v_result, SQLCODE, SQLERRM, 'insert_amsl');       end;   END insert_amsl;     PROCEDURE insert_tmrz(tmrz In tmrz_array) AS     v_max number;     v_result number;     v_status number;   BEGIN     delete from tmp_tmrz;     v_result := -10;     --數據插入臨時表     FOR i IN tmrz.FIRST .. tmrz.LAST LOOP       BEGIN         insert into tmp_tmrz           (transformerid,            transformername,            transformertype,            capacity,            stationid,            voltagegrade,            zoneid,            losstarget,            theoryloss,            statusflag,            groupid)         values           (tmrz(i).transformerid,            tmrz(i).transformername,            tmrz(i).transformertype,            tmrz(i).capacity,            tmrz(i).stationid,            tmrz(i).voltagegrade,            tmrz(i).zoneid,            tmrz(i).losstarget,            tmrz(i).theoryloss,            tmrz(i).statusflag,            tmrz(i).groupid);       END;     END LOOP;     /* insert into test2 (select count(1) from tmp_tmrz);     commit;*/     v_result := -20;     --代碼轉換     update tmp_tmrz a        set a.org_no =            (select b.org_no               from o_org b              where b.guid = a.zoneid                and rownum = 1);       update tmp_tmrz a        set a.area_code =            (select b.org_no               from o_org b              where b.guid = a.groupid                and rownum = 1);       update tmp_tmrz a        set a.subs_id =            (select b.subs_id               from g_subs b              where b.guid = a.stationid                and rownum = 1);       update tmp_tmrz a        set a.tran_id =            (select b.tran_id               from g_tran b              where b.guid = a.transformerid                and rownum = 1);     v_result := -30;     --更新正式表     update G_TRAN a        set (TRAN_NAME,             SUBS_ID,             ORG_NO,             RATED_VOLT,             PLATE_CAP,             PUB_PRIV_FLAG,             area_code,             SAVEDATETIME) =            (select b.transformername,                    b.subs_id,                    b.org_no,                    b.voltagegrade,                    b.capacity,                    '1',                    b.area_code,                    sysdate               from tmp_tmrz b              where a.tran_id = b.tran_id                and rownum = 1)      where exists (select 1 from tmp_tmrz b where a.tran_id = b.tran_id);     v_result := -40;     --刪除更新完的數據     delete from tmp_tmrz a where a.tran_id is not null;     --插入正式表(只支持單線程)     select nvl(max(a.tran_id), 0) into v_max from G_TRAN a;     insert into G_TRAN a       (tran_id,        TRAN_NAME,        SUBS_ID,        ORG_NO,        RATED_VOLT,        PLATE_CAP,        PUB_PRIV_FLAG,        area_code,        SAVEDATETIME,        guid)       (select v_max + rownum,               b.transformername,               b.subs_id,               b.org_no,               b.voltagegrade,               b.capacity,               '2',               b.area_code,               sysdate,               b.transformerid          from tmp_tmrz b);       commit;   EXCEPTION     WHEN OTHERS THEN       begin         ROLLBACK;         v_status := ERROR_LOG(v_result, SQLCODE, SQLERRM, 'insert_tmrz');       end;   END insert_tmrz;     PROCEDURE insert_lapt(lapt In lapt_array) AS     v_max number;     v_result number;     v_status number;   BEGIN     delete from tmp_lapt;     v_result := -10;     --數據插入臨時表     FOR i IN lapt.FIRST .. lapt.LAST LOOP       BEGIN         insert into tmp_lapt           (transformerid,            consumerid,            transformertype,            tgid,            capacity,            address,            longitude,            latitude,            supplylineno,            zoneid,            groupid)         values           (lapt(i).transformerid,            lapt(i).consumerid,            lapt(i).transformertype,            lapt(i).tgid,            lapt(i).capacity,            lapt(i).address,            lapt(i).longitude,            lapt(i).latitude,            lapt(i).supplylineno,            lapt(i).zoneid,            lapt(i).groupid);       END;     END LOOP;     v_result := -20;     --代碼轉換     update tmp_lapt a        set a.org_no =            (select b.org_no               from o_org b              where b.guid = a.zoneid                and rownum = 1);       update tmp_lapt a        set a.area_code =            (select b.org_no               from o_org b              where b.guid = a.groupid                and rownum = 1);       update tmp_lapt a        set a.tg_id =            (select b.tg_id               from g_tg b              where b.guid = a.tgid                and rownum = 1);     update tmp_lapt a        set a.cons_id =            (select b.cons_id               from c_cons b              where b.guid = a.consumerid                and rownum = 1);       update tmp_lapt a        set a.tran_id =            (select b.tran_id               from g_tran b              where b.guid = a.transformerid                and rownum = 1);     v_result := -30;     --更新正式表     update G_TRAN a        set (TG_ID,             ORG_NO,             PLATE_CAP,             PUB_PRIV_FLAG,             CONS_ID,             INST_ADDR,             area_code,             SAVEDATETIME) =            (select b.tg_id,                    b.org_no,                    b.capacity,                    b.transformertype,                    b.cons_id,                    b.address,                    b.area_code,                    sysdate               from tmp_lapt b              where a.tran_id = b.tran_id                and rownum = 1)      where exists (select 1 from tmp_lapt b where a.tran_id = b.tran_id);     v_result := -40;     --刪除更新完的數據     delete from tmp_lapt a where a.tran_id is not null;     --插入正式表(只支持單線程)     select nvl(max(a.tran_id), 0) into v_max from G_TRAN a;     insert into G_TRAN a       (tran_id,        TG_ID,        ORG_NO,        PLATE_CAP,        PUB_PRIV_FLAG,        CONS_ID,        INST_ADDR,        area_code,        SAVEDATETIME,        guid)       (select v_max + rownum,               b.tg_id,               b.org_no,               b.capacity,               b.transformertype,               b.cons_id,               b.address,               b.area_code,               sysdate,               b.transformerid          from tmp_lapt b);       commit;   EXCEPTION     WHEN OTHERS THEN       begin         ROLLBACK;         v_status := ERROR_LOG(v_result, SQLCODE, SQLERRM, 'insert_tmrz');       end;   END insert_lapt;     PROCEDURE insert_dmrt(dmrt In dmrt_array) AS     v_max number;     v_result number;     v_status number;     v_max1 number;     BEGIN     delete from tmp_dmrt;     v_result := -10;     --數據插入臨時表     FOR i IN dmrt.FIRST .. dmrt.LAST LOOP       BEGIN         insert into tmp_dmrt           (TGID, TGNAME, CONSNUM, ZONEID, GROUPID, SUPPLYLINENO)         values           (dmrt(i).TGID,            dmrt(i).TGNAME,            dmrt(i).CONSNUM,            dmrt(i).ZONEID,            dmrt(i).GROUPID,            dmrt(i).SUPPLYLINENO);       END;     END LOOP;     v_result := -20;     --代碼轉換     update tmp_dmrt a        set a.org_no =            (select b.org_no               from o_org b              where b.guid = a.zoneid                and rownum = 1);       update tmp_dmrt a        set a.area_code =            (select b.org_no               from o_org b              where b.guid = a.groupid                and rownum = 1);       update tmp_dmrt a        set a.line_id =            (select b.line_id               from g_line b              where b.guid = a.supplylineno                and rownum = 1);       update tmp_dmrt a        set a.tg_id =            (select b.tg_id               from g_tg b              where b.guid = a.tgid                and rownum = 1);     v_result := -30;     --更新正式表     update g_tg a        set (a.tg_name,             a.cons_num,             ORG_NO,             area_code,             SAVEDATETIME,             PUB_PRIV_FLAG,             RUN_STATUS_CODE) =            (select b.tgname,                    b.consnum,                    b.org_no,                    b.area_code,                    sysdate,                    '7400',                    '01'               from tmp_dmrt b              where a.tg_id = b.tg_id                and rownum = 1)      where exists (select 1 from tmp_dmrt b where a.tg_id = b.tg_id);     update g_line_tg_rela a        set (a.line_id, a.tg_id, a.savedatetime) =            (select b.line_id, b.tg_id, sysdate               from tmp_dmrt b              where a.line_id = b.line_id                and a.tg_id = b.tg_id                and rownum = 1)      where exists (select 1               from tmp_dmrt b              where a.line_id = b.line_id                and a.tg_id = b.tg_id);       v_result := -40;     --刪除更新完的數據     delete from tmp_dmrt a where a.tg_id is not null;     --插入正式表(只支持單線程)     select nvl(max(a.tg_id), 0) into v_max from g_tg a;     select nvl(max(a.line_tg_id), 0) into v_max1 from g_line_tg_rela a;     insert into g_line_tg_rela       (line_tg_id, line_id, tg_id, run_status_code, savedatetime)       (select v_max1 + rownum, b.line_id, b.tg_id, '01', sysdate          from tmp_dmrt b);     insert into g_tg a       (tg_id,        a.tg_name,        a.cons_num,        ORG_NO,        area_code,        SAVEDATETIME,        guid,        PUB_PRIV_FLAG,        RUN_STATUS_CODE)       (select v_max + rownum,               b.tgname,               b.consnum,               b.org_no,               b.area_code,               sysdate,               b.tgid,               '7400',               '01'          from tmp_dmrt b);       commit;   EXCEPTION     WHEN OTHERS THEN       begin         ROLLBACK;         v_status := ERROR_LOG(v_result, SQLCODE, SQLERRM, 'insert_dmrt');       end;   END insert_dmrt; END BASE_INFO;

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved