通过oracle存储过程,从同一个数据表一个时间差的数据的差值。如,表s_pm_cpu有time,value,equip三个字段,这个时间段的减去上一个时间段的value值,oracle新手,请大家帮忙写一个,谢谢,并讲一下如何在数据库中自动运行,谢谢了

解决方案 »

  1.   

    具体的数据来一段!自动执行,在ORACLE中就是定义一下JOB!
      

  2.   

    PORTID            STARTTIME                 CPUUSED    
     ---------------- --------------------  ---------------- 
     E0030015_CPU_789    2011-9-30 上午10:30:00          21         
     E0030015_CPU_789    2011-9-30 上午11:30:00          33
    将这两个时间段的数据做一个差值         
         
      

  3.   

    E0030015_CPU_789 当前时间 33-21=12
      

  4.   

    具体业务逻辑没有描述清楚:
    是计算指定的PORTID的,指定好的2个时间点的数据相减?
    还是计算所有PORTID的,所有时间点的,每后面的一个送去前面的一个?
      

  5.   

    计算指定的PORTID的,指定好的2个时间点的数据相减
      

  6.   


    CREATE OR REPLACE PROCEDURE prc_pm_cpu(in_portid integer,
                                           in_stime  date,
                                           in_etime  date) is
      v_value number;
      v_mincpuused number;
      v_maxcpuused number;
    begin
      begin
        select t.cpuused
          into v_mincpuused
          from s_pm_cpu t
         where t.portid = in_portid and t.starttime=in_stime;
         
        select t.cpuused 
          into v_maxcpuused
          from s_pm_cpu t
         where t.portid = in_portid and t.starttime=in_etime;
         
     v_value:=v_maxcpuused-v_mincpuused;
     
      end;
      commit;
    end prc_pm_cpu;
    不知道是不是这个意思
      

  7.   

    谢谢你,大体是你这个意思。这是个采集的数据表,本来是想用这个时间点的值减去上个时间点的值,取出来入到alarm表里,现在采集粒度是30分钟,还想问下,date格式的日期怎么做减法,求出前30分钟的时间
      

  8.   

    select riqi,riqi-1/48 from a
    riqi-1/48 是减半个小时,riqi-1/24是减一个小时。