+ -
当前位置:首页 → 问答吧 → oracle存储过程

oracle存储过程

时间:2011-11-28

来源:互联网

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

作者: guochenfeng   发布时间: 2011-11-28

给个例子比较好,这样说不是很清楚。

作者: programmerxiaocai   发布时间: 2011-11-28

SQL code
具体的数据来一段!

自动执行,在ORACLE中就是定义一下JOB!

作者: cosio   发布时间: 2011-11-28

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

作者: guochenfeng   发布时间: 2011-11-28

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


把你想要的结果也贴一下

作者: canhui87   发布时间: 2011-11-28

E0030015_CPU_789 当前时间 33-21=12

作者: guochenfeng   发布时间: 2011-11-28

谢谢,帮忙看下

作者: guochenfeng   发布时间: 2011-11-28

存储过程很好实现啊。
自动执行,就是建立一个作业罢,定期自动执行这个存储过程就好了。

作者: LuiseRADL   发布时间: 2011-11-28

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

作者: LuiseRADL   发布时间: 2011-11-28

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

作者: guochenfeng   发布时间: 2011-11-28

SQL code

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;

不知道是不是这个意思

作者: programmerxiaocai   发布时间: 2011-11-28

楼上应该正解!!!

作者: shaoqwer88   发布时间: 2011-11-28