首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

oracle job范例(转)

2012-09-29 
oracle job实例(转)?转?http://xurichusheng.iteye.com/blog/1328406定时执行的job1、创建表Sql代码??--?cr

oracle job实例(转)

?

转?http://xurichusheng.iteye.com/blog/1328406

定时执行的job

1、创建表

Sql代码??oracle job范例(转)
  1. --?create?table??
  2. CREATE?TABLE?g_test(c_id?NUMBER(28)?PRIMARY?KEY,c_date?DATE);??

?

2、创建序列

Sql代码??oracle job范例(转)
  1. --create?sequence??
  2. CREATE?SEQUENCE?seq_test?MINVALUE?1?MAXVALUE?999999999999999999999999999???
  3. START?WITH?1?INCREMENT?BY?1?NOCACHE;??

?

3、创建存储过程

Sql代码??oracle job范例(转)
  1. --?create?procedure??
  2. CREATE?OR?REPLACE?PROCEDURE?P_TEST?AS??
  3. ??V_SEQ?NUMBER(28);??
  4. BEGIN??
  5. ??SELECT?SEQ_TEST.NEXTVAL?INTO?V_SEQ?FROM?dual;??
  6. ??IF?V_SEQ?<=?999999999999999999999999999?THEN??
  7. ????INSERT?INTO?G_TEST?VALUES?(V_SEQ,?SYSDATE);??
  8. ??END?IF;??
  9. END?P_TEST;??
  10. /??

?

4、创建job

Sql代码??oracle job范例(转)
  1. --?create?job??
  2. BEGIN??
  3. ?--?每一分钟执行一次存储过程?P_TEST??
  4. ?--?job_action?:?存储过程名??
  5. ?--?start_date?:?执行job时间/日期??
  6. ?--?repeat_interval?:?间隔时间??
  7. ?dbms_scheduler.create_job(job_name?=>?'Job_g_test_insert',??
  8. ???????????????????????????job_type?=>?'stored_procedure',??
  9. ???????????????????????????job_action?=>?'P_TEST',??
  10. ???????????????????????????start_date?=>?TRUNC(SYSDATE),??
  11. ???????????????????????????repeat_interval?=>?'sysdate+1/1440');??
  12. ?--启用job??
  13. ?--?name即为上面的job_name??
  14. ?dbms_scheduler.enable(NAME?=>?'Job_g_test_insert');??
  15. ?--?运行Job??
  16. ?dbms_scheduler.run_job(job_name?=>?'Job_g_test_insert',??
  17. ????????????????????????use_current_session?=>?FALSE);??
  18. END;??
  19. /??

?

到这一步后,就可以查询表 g_test,看到数据了。

?

5、停止job

Sql代码??oracle job范例(转)
  1. --?停止job??
  2. BEGIN??
  3. ??dbms_scheduler.disable(NAME?=>?'Job_g_test_insert');??
  4. END;??
  5. /??

?

6、删除job

Sql代码??oracle job范例(转)
  1. --?删除job??
  2. BEGIN??
  3. ??dbms_scheduler.drop_job(JOB_NAME?=>?'Job_g_test_insert');??
  4. END;??
  5. /??

?

?

repeat_interval 参数:

???? 1/24 :一小时

???? 1/1440 : 一分钟

???? 1/(3600*24) : 一秒钟

?????sysdate+1 : 每天运行一次

???? sysdate+1/24 : 每一小时运行一次

???? sysdate+1/1440 : 每一分钟运行一次

???? sysdate+1/(3600*24) : 每一秒钟运行一次

???? sysdate+7 : 每星期运行一次

?

以上时间间隔不能保证任务(job)的下一次运行在一个特定的时间,仅仅能够指定一个任务两次运行之间的时间间隔。

特定日期或时间的例子:

trunc(sysdate+1) : 每天午夜12点

trunc(sysdate+1)+(8*60+30)/(24*60) : 每天早上8:30

trunc(last_date(sysdate)+1) : 每个月第1天的午夜12点

next_day(trunc(sysdate),"tuesday"+12/24) : 每星期二中午12点

热点排行