oracle的存储过程循环在使用dbms_jobs定时执行的情况下进行循环次数控制

请教下各位,plsql的dbms_jobs中,每天工作时间内(9:00-17:00)每分钟执行一个存储过程,该存储过程中有多条insert插入语句,所以这些所有的插入语句都是每分钟执行一次。
可不可以在存储过程中加一个判断,让某条插入语句每天只执行一次,执行成功后就不再进行循环,但是其余插入语句依旧每分钟循环。

加个标记来检测是否执行过了,实现过程如下,有需求请发完整code,在这个基础上改动

DECLARE  is_inserted BOOLEAN := FALSE;
  IF  NOT is_inserted THEN
        INSERT INTO my_table (column1, column2)
        VALUES (value1, value2, sysdate);
        is_inserted := TRUE;
    END IF;

建一个表用来保存你需要执行还是不需要执行的状态,或者每天执行的记录,执行存过的时候先写入这个表,后边就查这个表,如果当天有一条数据那就不再执行你对应的插入语句

可以在存储过程中添加一个判断,让特定的插入语句每天只会执行一次。

具体的实现方法如下:

  1. 在存储过程中添加一个变量(flag),默认为1。
  2. 对于需要每天仅执行一次的插入语句,在它们前面添加一个判断。例如,对于要执行一次的语句,可添加类似以下的代码:
    IF flag = 1 THEN -- 当仅在第一次执行时才会进入此分支
    INSERT INTO your_table ...
    flag := 0; -- 设置标志为0,使这个插入语句在以后的循环中不执行
    END IF;
    
  3. 对于其余的插入语句,则直接添加到存储过程中即可,它们将在每分钟周期性地执行。

这样做可以确保某些插入语句仅执行一次,而其余插入语句则依旧按照每分钟执行一次的规则进行循环。注意,在已经执行过这个存储过程一次并且通过了“每天执行一次”的插入语句之后,flag变量是不会被重置的,所以在第二天再次执行该存储过程时,flag依然为0,相应的插入语句将不会再次执行。