【问题标题】:Oracle execute procedure based on a table countOracle根据表计数执行过程
【发布时间】:2016-04-05 08:23:54
【问题描述】:

我在 PLSQL 中有一个过程,它从一个表中挑选 5000 条记录并插入到另一个表中。

JMS 队列然后从队列中挑选数据并处理它们。当队列为空时,我再次运行该过程以选择另外 5000 条记录。

plsql 中有没有办法自动执行此操作?每当队列表的计数为 0 时,它就会再次执行该过程。

【问题讨论】:

    标签: sql oracle stored-procedures plsql


    【解决方案1】:

    如果您的队列为空,您可以创建一个不时运行的 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;
    /
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-12
      • 2011-06-19
      • 2014-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多