您的位置:首页 > 数据库

PL/SQL存储过程-中国电力负荷数据存储功能-仅供参考

2016-02-03 13:22 393 查看
CREATE OR REPLACE PACKAGE BODY ssl AS
PROCEDURE insert_ssl(s In ssl_array) AS
v_month varchar2(20);
v_sql varchar2(5000);
v_result number;
v_status number;
BEGIN
delete from E_TMP_MP_SSL_CURVE;
select to_char(s(s.FIRST).data_time,'yyyymm') into v_month from dual;
v_result:=-10;
FOR i IN s.FIRST .. s.LAST LOOP
BEGIN
INSERT INTO E_TMP_MP_SSL_CURVE(MPED_ID,DATA_TIME,PS_FLAG,P,PA,PB,PC,Q,QA,QB,QC,UA,UB,UC,IA,IB,IC,COS,COSA,COSB,COSC,PAIA,PAIB,PAIC,PAUA,PAUB,PAUC,SAVEDATETIME,P_COEF,Q_COEF,V_COEF,C_COEF,AREA_CODE,FACTOR_COEF)
VALUES
(s(i).mped_id, s(i).data_time, s(i).ps_flag, s(i).p ,s(i).pa,s(i). pb,s(i).pc ,s(i).q ,s(i).qa,s(i).qb,s(i).qc,
s(i).ua,s(i).ub,s(i).uc,s(i).ia,s(i).ib,s(i).ic,
s(i).cos,s(i).cosa,s(i).cosb,s(i).cosc,s(i).paia,s(i).paib,s(i).paic,s(i).paua,s(i).paub,s(i).pauc
,sysdate,1,1,1,1,s(i).AREA_CODE,s(i).FACTOR_COEF);
END;
END LOOP;
v_result:=-20;
v_sql := 'delete from E_MP_SSL_CURVE_'||v_month||' a where exists (select 1 from E_TMP_MP_SSL_CURVE b where a.MPED_ID = b.MPED_ID and a.DATA_TIME = b.DATA_TIME and a.PS_FLAG = b.PS_FLAG ) ';
execute immediate v_sql;
v_result:=-30;
v_sql := 'insert into E_MP_SSL_CURVE_'||v_month||' (mped_id, data_time, ps_flag, ua, ub, uc, ia, ib, ic, i0, p, pa, pb, pc, q, qa, qb, qc, cos, cosa, cosb, cosc, sp, spa, spb, spc, fn, paia, paib, paic, paua, paub, pauc, temple, avgp, avgq, p_coef, q_coef, v_coef, c_coef, factor_coef, savedatetime, area_code) select * from E_TMP_MP_SSL_CURVE';
execute immediate v_sql;
commit;

EXCEPTION
WHEN OTHERS THEN
begin
ROLLBACK;
v_status := ERROR_LOG(v_result, SQLCODE, SQLERRM, 'insert_ssl');
end;

END insert_ssl;
END ssl;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: