如何写SQLServer的JOB让它每天定时的执行某个存储过程

如何写SQLServer的JOB让它每天定时的执行某个存储过程,第1张

create proc p_createjob

@jobname varchar(100), --作业名称

@sql varchar(8000),--要执行的命令

@serverName sysname='',--job server名

@dbname sysname='',--默认为当前的数据库名

@freqtype varchar(6)='day',--时间周期,month 月,week 周,day 日

@fsinterval int=1, --相对于每日的重复次数

@time int=170000 --开始执行时间,对于重复执行的作业,将从0点到23:59分!

variable job1 number

begin

dbms_job.submit(:job1,'test',trunc(sysdate),'sysdate+1/86400')

end

trunc(sysdate)是零点,'sysdate+1/86400'是每秒钟一次

对了,另外我很期待你一秒一次的job把你自己的数据库搞的半死不活

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

现为你写的,直接在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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9396441.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存