首页 > 解决方案 > 在我的第一个存储过程结束后如何启动存储过程?

问题描述

我有一个插入和(组合)需要几个小时才能运行的存储过程。我注意到,当我拆分存储过程时(1)小时、日、周 2)月、年);这两个存储过程完成运行的速度比在一个庞大的存储过程中运行要快得多。在第一个过程结束后运行第二个存储过程的最佳解决方案是什么?我在网上寻找解决方案无济于事。我也不认为触发器会起作用,因为这些“内部大小写”存储过程中的每一个都旨在处理数百个插入。以下是我的(淡化)代码:提前致谢!

另外:如果我可以对我的代码进行任何其他改进,任何/所有反馈都将受到赞赏:)

原始代码:

create or replace PROCEDURE STORED_PROCEDURE_COMBINED
is
  CURSOR hour IS
                SELECT distinct HOUR as HOUR
                  FROM TABLE
                 WHERE FLAG = 0;
  CURSOR day is
                SELECT distinct day as day
                  FROM TABLE
                 WHERE FLAG = 0;
  l_hr hour%ROWTYPE;
  l_day days%ROWTYPE;         
  INSERT_HOUR(l_hr.hour);
  INSERT_DAY(l_day.day);
  INSERT_WEEK(l_day.day);
  INSERT_MONTH(l_day.day);
  INSERT_YEAR(l_day.day);

END STORED_PROCEDURE_COMBINED;

我想要的是:

create or replace PROCEDURE STORED_PROCEDURE_1
is
  CURSOR hour IS
                SELECT distinct HOUR as HOUR
                  FROM TABLE
                 WHERE FLAG = 0;
  CURSOR day is
                SELECT distinct day as day
                  FROM TABLE
                 WHERE FLAG = 0;
  l_hr hour%ROWTYPE;
  l_day days%ROWTYPE;         
  INSERT_HOUR(l_hr.hour);
  INSERT_DAY(l_day.day);
  INSERT_WEEK(l_day.day);
 END STORED_PROCEDURE_1;

上述程序在完成后启动以下程序:

create or replace PROCEDURE STORED_PROCEDURE_2
is
  CURSOR day is
                SELECT distinct day as day
                  FROM TABLE
                 WHERE FLAG = 0;
  l_day days%ROWTYPE;
  INSERT_MONTH(l_day.day);
  INSERT_YEAR(l_day.day);

END STORED_PROCEDURE_2;     

标签: sqloracle

解决方案


create or replace PROCEDURE STORED_PROCEDURE_COMBINED
is
  STORED_PROCEDURE_1();
  STORED_PROCEDURE_2();
END STORED_PROCEDURE_COMBINED;

根据需要添加提交、错误检查和异常处理。


推荐阅读