奖况:
我现在有一个表A,系统前台不断的添加记录。现在要做一个job处理表A的记录。我使用的是
cursor is select * from (
select A.* from sms_timing_send A where A.SEND_TIME>=sysdate and STATUS=1 ) where rownum<40 for update NOWAIT; open cur_tsend;
for idx in cur_tsend loop end loop;
close cur_tsend;
commit;
exception
when others then用存储过程来处理表A的记录,存储过程尚未测试,编译没问题,到底逻辑对不对呢?
我的要求是:
1、可能多job同时运行
2、每次根据时间优先每次处理40条记录,要求不出现死锁情况,请大家给我提解决方案,谢谢了!
我现在有一个表A,系统前台不断的添加记录。现在要做一个job处理表A的记录。我使用的是
cursor is select * from (
select A.* from sms_timing_send A where A.SEND_TIME>=sysdate and STATUS=1 ) where rownum<40 for update NOWAIT; open cur_tsend;
for idx in cur_tsend loop end loop;
close cur_tsend;
commit;
exception
when others then用存储过程来处理表A的记录,存储过程尚未测试,编译没问题,到底逻辑对不对呢?
我的要求是:
1、可能多job同时运行
2、每次根据时间优先每次处理40条记录,要求不出现死锁情况,请大家给我提解决方案,谢谢了!
解决方案 »
- oracle连接问题
- 配置共享服务器出错
- 求助关于Oracle使用重做日志还原数据的问题
- ORA-12528: TNS:listener: all appropriate instances are blocking new connections
- 求一sql语句
- 帮我改一下下面的SQL,谢谢
- 为何启动ManagementServer 老是报错!
- 一组过程,我想将过程名存储到数据库中,然后在包体中遍历来动态调用,能否实现?
- 如何通过程序(VB等)让数据库执行一个.sql文件?
- OPTIMIZER_MISMATCH造成的version count高的问题
- 急~求Oracle8i的安装文件
- 有哪些方法可以提高大表的查询速度?
并发的话用for update skip locked
不明白你的处理需求为什么会是这样的。如果一条数据处理过了还需要再处理吗?为什么需要多个job同时运行?再问一句:where A.SEND_TIME>=sysdate 这样能选出数据吗?你的所有的记录的时间应该都小于当前的系统时间吧
1。在你的表里加一个Lock字段,一个JOB专门做更新这个字段,比如你有5个JOB要做查询操作,1-5,你就循环
给这5个JOB分配数据。
2。这5个JOB查询出,给自己分配的数据。