浏览 5478 次
锁定老帖子 主题:数据库定时任务
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-17
最后修改:2008-12-17
1、创建需要定时执行的存储过程代码。 2、创建定时job任务。 可以参照如下例子: CREATE OR REPLACE PROCEDURE drop_create_table IS str_sql varchar2(500); v_count number; BEGIN select count(*) into v_count from user_tables where table_name='TABLENAME'; if v_count<>0 then str_sql := 'drop table TABLENAME'; execute immediate str_sql; end if; str_sql := 'DYNAMIC SQL'; execute immediate str_sql; EXCEPTION when others then null; END drop_create_table; --定时删除 每天凌晨执行一次的计划 DECLARE X NUMBER; BEGIN SYS.DBMS_JOB.SUBMIT ( job => X ,what => 'drop_create_table;' ,next_date => to_date('26/09/2008 00:00:00','dd/mm/yyyy hh24:mi:ss') ,interval => 'sysdate + 1' ,no_parse => FALSE ); SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x)); COMMIT; END; 执行成功后,可以通过pl/sql客户端或者命令去验证执行是否成功 命令: select * from user_jobs 删除:dbms_jobs.remove('jobnum'); 注意:时间如果设置一个未来时间,则第一次执行是再设置的时间点。往后累加间隔时间执行,如果设置的时间点未当前时间之前。则数据库会自动设置当前时间点为第一次执行时间。以当前时间点作为起始点执行。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |