rowid切片,模拟oracle并行
来源:互联网 发布:数据库导入数据的方法 编辑:程序博客网 时间:2024/05/21 06:32
create or replace procedure para_update(v_jno in number) as
v_rec job_info%rowtype;
begin
update JOB_INFO set START_TIM=sysdate where jobno=v_jno;
COMMIT;
select * into v_rec from job_info where jobno = v_jno;
if v_rec.start_rowid = v_rec.end_rowid then
update test set status = 'AUTO' where rowid = v_rec.start_rowid;
else
update /*+ no_index(test test_obid)*/ test
set status = 'AUTO'
where rowid >= v_rec.start_rowid
and rowid < v_rec.end_rowid
and object_id BETWEEN 1000000 AND 2000000;
end if;
update JOB_INFO set end_TIM=sysdate where jobno=v_jno;
commit;
end;
/
SELECT COUNT(*) FROM TEST WHERE ......
declare
n_job number;
begin
execute immediate 'truncate table job_info';
for i in (select rid s_rid,
lead(rid, 1, rid) over(order by rn) e_rid
from (select rn, rid
from (select row_number()over(order by rowid) rn,
rowid rid,
count(*) over() total_rows
from test
where object_id BETWEEN 1000000 AND 2000000)
where rn in (select trunc(&&total_rows *level / &&level)
from dual
connect by level <= &&level
union
select 1
from dual))) loop
dbms_job.submit(n_job, 'para_update(JOB);');
insert into job_info
(jobno, start_rowid, end_rowid)
values
(n_job, i.s_rid, i.e_rid);
end loop;
end;
/
commit; SELECT JOBNO,TO_CHAR(START_TIM,'YYYYMMDD HH24:MI:SS'),TO_CHAR(END_TIM,'YYYYMMDD HH24:MI:SS') FROM JOB_INFO;
0 0
- rowid切片,模拟oracle并行
- oracle rowid
- ORACLE ROWID
- Oracle RowID
- ORACLE ROWID
- Oracle ROWID
- Oracle ROWID
- oracle rowid
- ORACLE-rowid
- Oracle ROWID
- Oracle rowid
- Oracle ROWID
- Oracle ROWID
- Oracle rowid
- Oracle rowid
- Oracle ROWID
- oracle-rowid
- Oracle中的Rowid
- Asp以及VBScript 的学习内容和经验
- 使用xmind编写测试用例
- 查看数据库所有参数脚本
- Android常用adb命令指南
- PHP中的错误处理
- rowid切片,模拟oracle并行
- [LeetCode]problem 174. Dungeon Game
- 多线程常用方法总结
- Effective Objective-C 2.0 读书笔记
- Joseph环问题
- linux基本命令(58)——telnet命令
- iOS中 UICollectionView图片浏览(高性能轮播器)
- EventBus 3.0 (一) 基础
- JavaScrip中cookie的基本使用