扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
将下面的存储过程名称换成实际的存储过程名称,就可以实现您要的功能的,
为甘肃等地区用户提供了全套网页设计制作服务,及甘肃网站建设行业解决方案。主营业务为网站设计制作、做网站、甘肃网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
现为你写的,直接在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;
一般在sqlplus或者其他第三方oracle工具中,按照语法及需求写好代码,直接执行创建过程即可。
一般语法如下:
1
2
3
4
5
6
7
8
9
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER }
{INSERT | DELETE | UPDATE [OF column [, column …]]}
[OR {INSERT | DELETE | UPDATE [OF column [, column …]]}...]
ON [schema.]table_name | [schema.]view_name
[REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}]
[FOR EACH ROW ]
[WHEN condition]
PL/SQL_BLOCK | CALL procedure_name;
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;
/
--查看记录表 SELECT * FROM JOB_RECORD_10GTABLE ORDER BY RECORDDATE DESC; --回滚记录表 DROP TABLE JOB_RECORD_10GTABLE; --删除记录表中的数据 DELETE FROM JOB_RECORD_10GTABLE; --2.建存储过程 CREATE OR REPLACE PROCEDURE PRO_10GJOB_TESTISBEGININSERT INTO JOB_RECORD_10GTABLE VALUES(SYSDATE); END PRO_10GJOB_TEST;--3.建JOBBEGINSYS.DBMS_SCHEDULER.CREATE_JOB( JOB_NAME = 'JOB10GTEST',--生成job名称 JOB_TYPE = 'STORED_PROCEDURE',--job类型 JOB_ACTION = 'PRO_10GJOB_TEST',--job执行的程序 START_DATE = SYSDATE,--job开始执行时间 REPEAT_INTERVAL = 'FREQ=MINUTELY',--job执行频率 END_DATE = NULL,--job结束执行时间 JOB_CLASS = 'DBMS_JOB$', ENABLED = TRUE, AUTO_DROP = FALSE, COMMENTS = '10G JOB 测试');--job描述END;--4.启动JOBBEGINDBMS_SCHEDULER.ENABLE('JOB10GTEST');END;--5.停用JOBBEGINDBMS_SCHEDULER.STOP_JOB('JOB10GTEST');END;--5.删除JOBBEGINDBMS_SCHEDULER.DROP_JOB('JOB10GTEST'); 最后给出JOB执行频率的一些参数 以下给出部分repeat_interval的写法实例,以供参考 每天'FREQ=DAILY;INTERVAL=1' 第分钟 'FREQ=MINUTELY;INTERVAL=1' 每4小时 'FREQ=HOURLY;INTERVAL=4;BYMINUTE=0;BYSECOND=0' 每月第一天 'FREQ=DAILY;BYMONTHDAY=1' 工作日的上午7点和下午3点 'FREQ=DAILY; BYDAY=MON,TUE,WED,THU,FRI; BYHOUR=7,15;BYMINUTE=0;BYSECOND=0'
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流