存储过程重复插入数据

问题:.存储过程中做了重复的判断,但是目标表中还是出现的重复的数据

 

原因:存储过程被两个job调用。因为是同时在调用,根据事务的级别,插入但是没有commit的数据,是在另外一个事务当中查询不到的。所以导致了数据被重复写入。。。。

### Oracle 存储过程与定时任务 #### 创建存储过程用于插入数据 为了实现定期向表中插入数据的功能,首先需要定义一个能够完成特定插入操作的存储过程。假设有一个名为`employees`的表,并希望每小时往该表里增加一条记录作为示例。 ```sql CREATE OR REPLACE PROCEDURE insert_employee_data IS BEGIN INSERT INTO employees (employee_id, first_name, last_name, hire_date) VALUES ( employee_seq.NEXTVAL, 'John', TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'), SYSDATE); END; / ``` 这段代码创建了一个新的存储过程`insert_employee_data`[^1],它会每次调用时向`employees`表中添加一个新的员工条目,其中`first_name`固定为"John", `last_name`则被设成当前日期时间戳字符串形式以便区分不同时间段插入数据项;而`hire_date`字段保存实际的操作时刻。 #### 设置定时任务自动运行此存储过程 接下来配置一个计划程序使得上述存储过程可以按照设定的时间间隔重复执行: ```sql DECLARE job NUMBER; BEGIN DBMS_SCHEDULER.create_job ( job_name => 'hourly_insert_task', job_type => 'PLSQL_BLOCK', job_action => 'BEGIN insert_employee_data; END;', start_date => SYSTIMESTAMP, repeat_interval => 'FREQ=HOURLY; BYHOUR=*; BYMINUTE=0;', enabled => TRUE ); END; / ``` 这里利用了`DBMS_SCHEDULER`包中的`create_job`函数来建立一个叫做`hourly_insert_task`的任务实例[^3]。这个任务会在每一整点准时触发一次之前编写的`insert_employee_data`存储过程,从而达到周期性地向目标表格内写入新纪录的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值