oracle中如何创建一个job

存储过程已经编写好,需要在每天的凌晨1点执行这个存储过程,我用的是PL/SQLDeveloper,是在PL/SQLDeveloper哪个窗口建立job,如何建立job,如... 存储过程已经编写好,需要在每天的凌晨1点执行这个存储过程,我用的是PL/SQL Developer,是在PL/SQL Developer哪个窗口建立job,如何建立job,如何执行job,如何删除job 展开
 我来答
lala563210
2014-04-16 · TA获得超过262个赞
知道答主
回答量:27
采纳率:100%
帮助的人:48.5万
展开全部

将下面的存储过程名称换成实际的存储过程名称,就可以实现您要的功能的,

现为你写的,直接在pl/sql dev里面执行就行了,有啥问题再联系我。

上面一段是删除job,后面的是建立job,我写了判断语句,可以随意执行

参考oracle的 dbms_job包。

 

---------------------华丽丽的分割线----------------------------

DECLARE 

  i_count number;

  job_num number;

BEGIN 

  select count(job) into i_count from user_jobs where upper(what)='存储过程名称;';

  if i_count>0 then

     select job into job_num from user_jobs where upper(what)='存储过程名称;';

     dbms_job.remove(job_num);

  end if; 

END;

/

commit;

DECLARE X NUMBER;

BEGIN

  DBMS_JOB.SUBMIT

    ( job      => X

    ,what      => '存储过程名称;'

    ,next_date => to_date(to_char(sysdate+1,'yyyy-mm-dd')||' 01:00:00','yyyy-mm-dd hh24:mi:ss')

    ,interval  => 'SYSDATE+1'

    ,no_parse  => TRUE

    );

END;

/

commit;

秀乞群群
2015-03-30 · TA获得超过19万个赞
知道顶级答主
回答量:6.7万
采纳率:91%
帮助的人:2.5亿
展开全部
对于DBA来说,数据库Job再熟悉不过了,因为经常要数据库定时的自动执行一些脚本,或做数据库备份,或做数据的提炼,或做数据库的性能优化,包括重建索引等等的工作。
job参数是由Submit()过程返回的binary_ineger,这个值用来唯一标识一个工作;
what参数是将被执行的PL/SQL代码块;
next_date参数指识何时将运行这个工作。写Job的时候可以不指定该值;
interval参数何时这个工作将被重执行。
其中Interval这个值是决定Job何时,被重新执行的关键。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
记住俺是谁
2014-04-16 · TA获得超过163个赞
知道小有建树答主
回答量:78
采纳率:100%
帮助的人:46.8万
展开全部


什么也甭说了 上图。你说的操作都在图里。自己玩把。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leijiang198708
2014-04-16 · 超过19用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:26.5万
展开全部
以下是建立JOB的语句。自己慢慢理解。
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'KTHIS.P_REPAIR_VISITS_MK(TO_CHAR(SYSDATE,''yyyyMM''));'
,next_date => to_date('01.01.4000 00:00:00','dd/mm/yyyy hh24:mi:ss')
,interval => 'TRUNC(SYSDATE+1)'
,no_parse => FALSE
);
SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
COMMIT;
END;
/
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aaa1993007
2014-04-16
知道答主
回答量:15
采纳率:0%
帮助的人:8.8万
展开全部
variable jobno number;
begin
dbms_job.submit(job => :jobno,
what => '过程名;',
next_date => trunc(sysdate,'dd')+1+1/24,
interval => 'trunc(sysdate,''dd'')+1+1/24'
);
commit;
end;
/

select job from dba_jobs where what like '%过程名%';
--删除job
exec dbms_job.remove(job);
/
注意权限问题,有可能你的用户没有 drop database link 。create database link权限
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式