只有What,Next date, Interval,Broken这几个参数是必填的么?
分别是什么含意我想做一个job,在每天23点的时候调用一个存储过程 pro_test每天调用一次就可以了该怎么实现呢
分别是什么含意我想做一个job,在每天23点的时候调用一个存储过程 pro_test每天调用一次就可以了该怎么实现呢
解决方案 »
- 【求高手扫盲】oracle中的role和system privilege
- 问个sql语句写法的问题,请大家帮忙(suncrafted 帮忙看一下)
- 重新建了分区表,索引坏了,有没有什么命令修复索引?
- oracle 9i&10g编程艺术配环境的问题?
- t_sql procedure 如何改写成 pl/sql procedure!
- 请问sql server 中的right(字符串,分割位数)对应oracle是哪个函数???
- 如何获取系统表的数据字典?
- 将SQL Server 2000中表的数据导入到Oracle,怎么做?
- 请教一个存储过程
- 64bit Sqlserver2012 链接服务器连接Oracle10g 32bit已被玩疯
- 查询语句
- oracle 中更新游标的问题
next_date 2006-8-25 23:00:00
interval trunc(sysdate+1)+23/24
broken不用选
想在每天23点执行my_proc这个存储过程。DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'my_proc;'
,next_date => sysdate
,interval => 'trunc(sysdate + 1) + 23 / 24'
,no_parse => TRUE
);
SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
commit;
END;现在这个代码编译可以通过,但是运行的时候提示下面的错误消息:ORA-12011:无法执行1作业
ORA-06512:在"SYS.DBMS_IJOB",line406
ORA-06512:在"SYS.DBMS_JOB",line272
ORA-06512:在line1是什么原因阿,是创建作业的代码有问题么,希望各位高手指点
建议创建JOB前,先删除已有的JOB,再创建试试下面的代码:
--*****************任务***********************
--注:Set serveroutput on等是改变SQL*PLUS或者SQL*PLUS WorkSheet的会话SET SERVEROUTPUT ON;
Alter session set NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';--先删除JOB
DECLARE
JOB BINARY_INTEGER; --任务ID
CURSOR cur_job is select job from user_jobs;
begin
open cur_job;
fetch cur_job into JOB;
while cur_job%FOUND
loop
DBMS_JOB.REMOVE(JOB);
commit;
fetch cur_job into JOB;
end loop;
close cur_job;
end;
/--创建JOB
DECLARE
JOB BINARY_INTEGER; --任务ID
v_begin DATE; --开始时间
v_interval VARCHAR2(50); --时间间隔
BEGIN
v_begin := SYSDATE;
v_interval := 'trunc(SYSDATE+1) + 23 / 24'';
DBMS_JOB.SUBMIT(JOB,'my_proc;',v_begin,v_interval,FALSE,0,FALSE);
DBMS_OUTPUT.PUT_LINE('JOB(任务)编号:' || JOB);
COMMIT;
END;
/