存储过程
create or replace procedure upbuslocation(mindex number,longitude number,latitude number,angle 
number,speed number,time date) is
begin
 declare num number;
 begin
  select count(*) into num from d_buslocation where Mindex=mindex;
  if num>0 then
   update d_buslocation set Longitude=longitude,Latitude=latitude,Speed=speed,
   Angle=angle,Time=time where Mindex=mindex;
  else
   insert into d_buslocation(mindex,longitude,latitude,speed,angle,time) values(mindex,longitude,latitude,speed,angle,time);
  end if;
  insert into d_buslocation_his(mindex,longitude,latitude,speed,angle,time) values(mindex,longitude,latitude,speed,angle,time);
  end;
end upbuslocation;调用语句
exec upbuslocation (19247,6765506,1705205,13,2,to_date('2010-1-28 12:59:56','yyyy/mm/dd hh24:mi:ss'))

解决方案 »

  1.   

    这个看下后台进程里面的sql语句,看看是哪个sql语句消耗的cpu最多,再比对下存储过程,就可以知道是哪一行出问题了!
      

  2.   

    通过企业管理器查看后台是否有表死锁,同时看看CPU开销以及I/O开销情况,再针对性排除
      

  3.   

    查询最郝CPU的sql :select t.CPU_TIME,t.* from v$sqlarea t  order by  t.CPU_TIME desc