oracle定时更新(JOBS)oracle定时更新(JOBS)
rm.pro_hrm_emp_info_job过程
需要每天都更新oracle怎么弄job , 所以先创建个procedureoracle怎么弄job , 再创建个job就可以实现定时更新
create or replace procedure rm.pro_hrm_emp_info_job is
zm
begin
update rm.hrm_emp_info
set ages = to_number(TRUNC(nvl((sysdate brith_date) / 365, 0))),
leng_serv = to_number(TRUNC(nvl((sysdate work_date) / 365, 0))),
ins_len_ser = to_number(TRUNC(nvl((sysdate ente_appe_date) / 365,
0)));
commit;
end pro_hrm_emp_info_job;
相应oracle怎么弄job的`job
declare
jobno number;
begin
dbms_job.submit(jobno,’rm.pro_hrm_emp_info_job;’,trunc(sysdate),’trunc(sysdate) 1’);每天零点更新
commit;
end;
/
分解下job
dbms_job.submit(jobno, job号oracle怎么弄job,由sys.jobseq生成
’rm.pro_hrm_emp_info_job;’, 要执行oracle怎么弄job的procedure
trunc(sysdate), 下次要执行的时间
’trunc(sysdate) 1’); 每次间隔的时间,此处的1标识一天 也可1/1440每一分钟执行一次
查看
select * from sys.user_jobs;
其中创建的jobno(任务号)由sys.jobseq序列生成
主由packages中的sys.dbms_job执行
细节可以查看sys.dbms_job包内容 。;
Oracle创建Job,每天定时执行操作begin
dbms_scheduler.create_job(job_name = 'scan_table',
job_type = 'STORED_PROCEDURE',
job_action = 'sp_scan_table', --自定义的扫描表存储过程
start_date = to_timestamp('20150827 00:00:00', 'yyyymmdd hh24:mi:ss'),
repeat_interval = 'freq=minutely;interval=10;byhour=17,18,19,20,21,22,23');
end;
/
begin
dbms_scheduler.enable(name = 'scan_table');
end;
/
oracle中如何创建一个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_count0 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;
oracle job的写法DECLARE
v_JobID NUMBER;
BEGIN CREATE_JOBS
-- 创建用户状态保护处理任务
-- 运行间隔时间5秒钟
BEGIN
SELECT JOB INTO v_JobID FROM USER_JOBS
WHERE UPPER(WHAT) = 'p_operator(2000);' AND ROWNUM = 1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_JobID := 0;
END;
IF v_JobID = 0 THEN
SYS.DBMS_JOB.SUBMIT(JOB = v_JobID,
WHAT = 'p_operator(2000);',
NEXT_DATE = SYSDATE,
INTERVAL = 'SYSDATE(5 / 86400)');
ELSE
SYS.DBMS_JOB.CHANGE(JOB = v_JobID,
WHAT = 'p_operator(2000);',
NEXT_DATE = SYSDATE,
INTERVAL = 'SYSDATE(5 / 86400)');
END IF;
COMMIT;
END CREATE_JOBS;
/
如果需要进行drop表 create 表 insert into 插入数据oracle怎么弄job , 那么p_operator存储过程里面操作,其中括号里面oracle怎么弄job的1000是入参,如果oracle怎么弄job你不需要参数,那么可以删除
oracle数据库怎么启动job先查看你job的jobid
select * from dba_jobs ;
然后根据jobid来启动job
exec dbms_job.run(job = JOBID) ;
【oracle怎么弄job oracle的job怎么写】oracle怎么弄job的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于oracle的job怎么写、oracle怎么弄job的信息别忘了在本站进行查找喔 。
推荐阅读
- vr怎么保存到u盘,vr视频怎么导出
- 新封神英雄榜用什么拍摄,新封神英雄榜为什么停播
- 学生Python爬虫作业,python爬虫自学系列
- 怎么检测机械硬盘真假识别,怎么鉴别机械硬盘有没有问题
- MySQL怎么导库比较快 mysql怎么导入库
- 头条开店如何营销,今日头条如何开店
- 1366有什么cpu,1366针cpu性价比最高
- VB.Net绘制多段线 vb中用line方法画直线
- 素颜下载,素颜下载 MP3