- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Oracle定时器
Oracle定时器
Oracle定时器语法
declare
jobno number;
begin dbms_job.submit job out binary_integer, -- 任务编号
what in varchar2, -- 任务过程
next_date in date, -- 任务执行时间
interval in varchar2 -- 任务执行时间间隔
;
commit;
end; 关于interval的设置,参考以下几个例子:
-- 1.每分钟执行
trunc sysdate,mi +1/ 24*60
-- 2.每天定时执行
-- 例如:每天的凌晨2点执行
trunc sysdate +1+ 2/24
-- 3.每周定时执行
-- 例如:每周一凌晨2点执行
trunc next_day sysdate,2 + 2/24
-- 4.每月定时执行
-- 例如:每月1日凌晨2点执行
trunc last_day sysdate +1+ 2/24
-- 5.每季度定时执行
-- 例如每季度的第一天凌晨2点执行
trunc add_months sysdate,3 ,Q + 2/24
-- 6.每半年定时执行
-- 例如:每年7月1日和1月1日凌晨2点
add_months trunc sysdate,yyyy ,6 + 2/24
-- 7.每年定时执行
-- 每年1月1日凌晨2点执行
add_months trunc sysdate,yyyy ,12 + 2/24
Oracle定时器实例
-- 1.创建表
create table zc_test name varchar2 50
;
-- 2.创建存储过程
create or replace procedure proc_zc_test p_name in varchar2 -- 姓名 is
begin
insert into zc_test name values p_name || _ ||to_char sysdate, yyyy-mm-dd hh24:mi:ss ;
commit;
end;
/**
-- 测试
begin
proc_zc_test zc ;
end;
-- select * from zc_test;
*/
-- 3.创建定时器
-- 例如:每分钟执行
declare job_proc_zc_test number;
begin
dbms_job.submit job_proc_zc_test, proc_zc_test zc ;, sysdate, trunc sysdate,mi +1/ 24*60 ;
commit;
end;
-- 4.查看定时器任务
select * from user_jobs;
/**
-- 5.操作定时器 0:停止定时器,1:启动定时器,2:删除定时器
*/
create or replace procedure proc_zc_do_jobs p_type in number, -- 操作类型 p_job in number -- 定时器ID is v_rows number : 0; -- 记录条数,设置默认值
begin
-- 根据定时器ID查询定时器个数
select count * into v_rows from user_jobs where job p_job;
if v_rows 0 then
begin if p_type 0 then begin dbms_output.put_line 当前为停止定时器 操作 ; dbms_job.broken p_job,sys.diutil.int_to_bool 1 ; dbms_output.put_line ID为 || p_job || 的定时器 停止成功 ; end; elsif p_type 1 then begin dbms_output.put_line 当前为启动定时器 操作 ; dbms_job.run p_job ; dbms_output.put_line ID为 || p_job || 的定时器 启动成功 ; end; elsif p_type 2 then begin dbms_output.put_line 当前为 删除定时器 操作 ; dbms_job.remove p_job ; commit; dbms_output.put_line ID为 || p_job || 的定时器 删除成功 ; end; end if;
end;
else
begin dbms_outpu
文档评论(0)