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

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;
时间: 2024-12-21 14:21:16

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

在PL/SQL使用游标获取数据及动态SQL

1.游标概念: 当在PL/SQL块中执行DML(增删改)时,Oracle会为其分配上下文区(Context Area),游标是指向上下文区的指针 2.  游标分类: A.  隐式游标 a.  在PL/SQL中使用DML语句时自动创建隐式游标 b.  隐式游标自动声明.打开和关闭,其名为 SQL c.  通过检查隐式游标的属性可以获得最近执行的DML 语句的信息 d.  隐式游标的属性有: %FOUND – SQL 语句影响了一行或多行时为 TRUE %NOTFOUND – SQL 语句没有影响任

PL/SQL存储过程编程

/**author huangchaobiao *Email:[email protected] */ PL/SQL存储过程编程(上) 1. Oracle应用编辑方法概览 答:1) Pro*C/C++/... : C语言和数据库打交道的方法,比OCI更常用; 2) ODBC 3) OCI: C语言和数据库打交道的方法,和ProC很相似,更底层,很少用; 4) SQLJ: 很新的一种用Java访问Oracle数据库的方法,会的人不多; 5) JDBC 6) PL/SQL: 存储在数据内运行, 其他

Unity上一页下一页切换功能实现源码(仅供参考)

在做项目时我们有时需要实现切换上一页下一页图片,切换上一首下一首歌曲等等类似的功能.这里写了个简单的实现源码(仅供参考),要是有更好的方法欢迎提出来,共同进步~ 以切换上一页下一页图片为例: using UnityEngine; using System.Collections; using UnityEngine.UI; public class PanoramaManager : MonoBehaviour { //图片存放数组 Texture2D[] arr; //下一张按钮计数索引 in

用PL/SQL DEVELOPER把表数据复制到另一个表中

1.创建新表,business_copy,并复制bisiness表的数据 CREATE TABLE BUSINESS_COPY AS SELECT * FROM BUSINESS; 注释:此SQL语句只是创建了表和复制了表的数据,但是没有把表的约束复制过来. 2.在PL/SQL DEVELOPER删除表 例如删除表business,可执行一下操作, 1)DROP TABLE BUSINESS; 2)找到此表,单击右键,选择跨界删除操作. 3.在PL/SQL DEVELOPER快速创建表. 4.如

PL/SQL跨库查询数据

步骤一:找到Database links  (新建) 步骤二:正确填写完对应信息 (应用) : 步骤三:执行PL/SQL语句(完成) select * from [email protected] 注释:tablename:指定连接库指定用户下的表

oracle学习-PL SQL 存储过程中循环、触发器

PL SPL 提供了3中不同类型的循环结构 -- 实例:索引 loop_counter从1开始,到10 结束,循环共执行10次 FOR loop_counter IN 1 .. 10 LOOP ...可执行语句... END LOOP; -- 索引loop_counter从10开始,到1结束,循环共执行10次: FOR loop_counter IN REVERSE 1 .. 10 LOOP ...可执行语句... END LOOP; -- 循环的执行范围取决于变量或者表达式的值: FOR ca

PL/SQL&存储过程||存储函数&触发器

plsql 有点:交互式  非过程化   数据操纵能力强   自动导航语句简单   调试简单   想率高 声明类型的方式 1.基本类型 2.引用变量 3.记录型变量 基本格式 declare 声明 begin exception end 判断语句 if:..then... else end if: 循环 loop 退出条件   exit when ...; end loop: 光标 cursor ---resltSet 返回多行数据 格式 cursor 表明 oper 打开 fetch 去一行光

oracle pl/sql 存储过程

存储过程用于执行特定的操作,当建立存储过程时,既可以指定输入参数(in),也可以指定输出参数(out),通过在过程中使用输入参数,可以将数据传递到执行部分:通过使用输出参数,可以将执行部分的数据传递到应用环境.在sqlplus中可以使用create procedure命令来建立过程.实例如下:1.请考虑编写一个存储过程,可以输入雇员名,新工资,用来修改雇员的工资 --根据雇员名去修改工资CREATE PROCEDURE sp_update(uname VARCHAR2, newsal NUMBE

Oracle笔记 十、PL/SQL存储过程

--create or replace 创建或替换,如果存在就替换,不存在就创建 create or replace procedure p is cursor c is select * from dept2 for update; begin for row_record in c loop if (row_record.deptno = 30) then update dept2 set dname = substr(dname, 0, length(dname) - 3) where c