sql - 在我的第一个存储过程结束后如何启动存储过程?
问题描述
我有一个插入和(组合)需要几个小时才能运行的存储过程。我注意到,当我拆分存储过程时(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;
解决方案
create or replace PROCEDURE STORED_PROCEDURE_COMBINED
is
STORED_PROCEDURE_1();
STORED_PROCEDURE_2();
END STORED_PROCEDURE_COMBINED;
根据需要添加提交、错误检查和异常处理。
推荐阅读
- javascript - 为什么我的打印预览使用 window.print 是空白的?
- sql - 重新编译变更表
- c# - 解压缩文件并将它们保存到 Blob 存储流
- docker - 无法使用 --restart 运行 Docker
- python - Seaborn pairplot 图例不显示颜色和标签
- java - @RequestBody 对象可以是 2 个不同的类
- java - 使用远程 PostgreSQL Db 将 Spring-Boot 应用程序部署到远程服务器的问题
- asp.net-mvc - ASP.NET CORE 5.0 -- 调试时的会话管理
- ios - UIDatePicker 的文本颜色不会改变(iOS 14+)
- python - pandas `rolling` 不知道自己的功能