请教下各位,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;
建一个表用来保存你需要执行还是不需要执行的状态,或者每天执行的记录,执行存过的时候先写入这个表,后边就查这个表,如果当天有一条数据那就不再执行你对应的插入语句
可以在存储过程中添加一个判断,让特定的插入语句每天只会执行一次。
具体的实现方法如下:
IF flag = 1 THEN -- 当仅在第一次执行时才会进入此分支
INSERT INTO your_table ...
flag := 0; -- 设置标志为0,使这个插入语句在以后的循环中不执行
END IF;
这样做可以确保某些插入语句仅执行一次,而其余插入语句则依旧按照每分钟执行一次的规则进行循环。注意,在已经执行过这个存储过程一次并且通过了“每天执行一次”的插入语句之后,flag变量是不会被重置的,所以在第二天再次执行该存储过程时,flag依然为0,相应的插入语句将不会再次执行。