上周接了一个新任务——写存储过程,我以前可不知道这玩意怎么写,上周用了一个星期琢磨了一下然后终于给弄出来了,数据库用的是Oracle,需求是说要每天定时去处理大批量的数据,用存储过程处理好了存在中间表里面,然后项目平台就直接取中间表的数据就OK,因为目前而言我们是以XX平台为基础的二次开发,很多开发具有局限性,对于大量的数据处理全都是原生sql多表联查各种复杂查询出来,效率特别低,速度特慢,所以就有了这么一个任务了。个人建议还是使用PL/SQl比较方便。我首先就是写一个入口,所有其他存储过程调用都从这个入口开始:
第一步:写一个存储过程入口
我这边是执行所有ETL开头的存储过程
create or replace procedure START_ETL is
cursor procs is select object_name as pn from user_procedures where object_name like 'ETL%';
proc procs%rowtype;
begin
for proc in procs loop
execute immediate 'begin '||proc.pn||'; end;';
-- dbms_output.put_line(proc.pn);
end loop;
end START_ETL;
第二步:写一个定时器
begin
sys.dbms_job.submit(job => :job,
what => 'begin
start_etl;
end