【发布时间】:2016-04-05 08:23:54
【问题描述】:
我在 PLSQL 中有一个过程,它从一个表中挑选 5000 条记录并插入到另一个表中。
JMS 队列然后从队列中挑选数据并处理它们。当队列为空时,我再次运行该过程以选择另外 5000 条记录。
plsql 中有没有办法自动执行此操作?每当队列表的计数为 0 时,它就会再次执行该过程。
【问题讨论】:
标签: sql oracle stored-procedures plsql
我在 PLSQL 中有一个过程,它从一个表中挑选 5000 条记录并插入到另一个表中。
JMS 队列然后从队列中挑选数据并处理它们。当队列为空时,我再次运行该过程以选择另外 5000 条记录。
plsql 中有没有办法自动执行此操作?每当队列表的计数为 0 时,它就会再次执行该过程。
【问题讨论】:
标签: sql oracle stored-procedures plsql
如果您的队列为空,您可以创建一个不时运行的 Oracle 作业以插入新记录:DBMS_JOB vs DBMS_SCHEDULER
安排一些事情看起来很简单:https://stackoverflow.com/a/27820057/6019417
创建过程
PROCEDURE p1
IS
v_count number := 0;
BEGIN
select count(1) into v_count from my_table;
if v_count = 0 then
-- add 5000 rows
end if;
END;
在您喜欢的任何时候拨打DBMS_JOBS:
每次您喜欢时都在DBMS_JOBS 中拨打相同的电话(在我的示例中是每 10 分钟一次):
VARIABLE jobno number;
BEGIN
DBMS_JOB.SUBMIT(:jobno, 'p1', SYSDATE, 'trunc(sysdate,''MI'')+60/1440');
COMMIT;
END;
/
【讨论】: