这个搜一下,动动手应该很容易搞定的 来个最简单的jobdeclare jobno integer; begin dbms_job.submit(jobno,'begin insert into note values(1,''test''); end;',sysdate,'sysdate+5/1440'); dbms_output.put_line(jobno); commit; end; /主要是一个dbms_job.submit过程,这个过程包含的几个参数: job:这是个输出参数,要放一个变量来,存储过程会将创建的job的job号赋给它 what:要执行的存储过程。如果是sql语句,将它写到存储过程里,注意commit next_date:第一次执行的时间。sysdate表示现在开始执行 interval :'sysdate+5/1440'代表每隔5分钟执行一次
job 运行一个存储过程怎么写?
'begin insert into note values(1,''test''); end; ->存储过程名字
'begin insert into note values(1,''test''); end; ->存储过程名字
'begin insert into note values(1,''test''); end; ->存储过程名字 create or replace PRocedure pro_test AS carinfo_id number; BEGIN select s_CarInfoID.nextval into carinfo_id from dual; insert into test(test.carno,test.carinfoid) values(carinfo_id,'123'); commit; end pro_test; 这个就是我存储过程,前面还报无效?
select status from user_objects where object_name='PRO_TEST'; 看看存储过程的状态如果是invalid,用命令窗口重新创建,show error来查看错误
存储过程是invalid,我在命令窗口运行报下面的错 declare jobno integer; begin dbms_job.submit(jobno,'pro_test;',sysdate,'sysdate+5/1440'); commit; end;
ORA-00900: 无效 SQL 语句 SQL> show parameter job_queue_processes;
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ job_queue_processes integer 10
这2句语句是干嘛的 。不太懂
那个参数不是指job个数,而是同时执行的并发进程数 job个数应该是没有限制的
interval :'trunc(sysdate)+47/24'
declare jobno integer; jobno 可以重复?
你看输出的jobno值,是不一样的
好像我用这个jobno建了好几个 declare jobno integer; begin dbms_job.submit(jobno,'pro_pfscdlmonth;',sysdate,'sysdate+5/1440'); commit; end; 就第一个建的在操作,其他的job 都没运行。 select name,value from v$parameter where name ='job_queue_processes'; value是10 你刚刚说输出jobno怎么输出看?
来个最简单的jobdeclare
jobno integer;
begin
dbms_job.submit(jobno,'begin insert into note values(1,''test''); end;',sysdate,'sysdate+5/1440');
dbms_output.put_line(jobno);
commit;
end;
/主要是一个dbms_job.submit过程,这个过程包含的几个参数:
job:这是个输出参数,要放一个变量来,存储过程会将创建的job的job号赋给它
what:要执行的存储过程。如果是sql语句,将它写到存储过程里,注意commit
next_date:第一次执行的时间。sysdate表示现在开始执行
interval :'sysdate+5/1440'代表每隔5分钟执行一次
'begin insert into note values(1,''test''); end;
->存储过程名字
'begin insert into note values(1,''test''); end;
->存储过程名字
'begin insert into note values(1,''test''); end;
->存储过程名字
create or replace PRocedure pro_test
AS
carinfo_id number;
BEGIN
select s_CarInfoID.nextval into carinfo_id
from dual;
insert into test(test.carno,test.carinfoid) values(carinfo_id,'123');
commit;
end pro_test;
这个就是我存储过程,前面还报无效?
看看存储过程的状态如果是invalid,用命令窗口重新创建,show error来查看错误
declare
jobno integer;
begin
dbms_job.submit(jobno,'pro_test;',sysdate,'sysdate+5/1440');
commit;
end;
ORA-06550: 第 1 行, 第 93 列:
PLS-00905: 对象 NCPJGJC.PRO_TEST 无效
ORA-06550: 第 1 行, 第 93 列:
PL/SQL: Statement ignored
ORA-06512: 在 "SYS.DBMS_JOB", line 79
ORA-06512: 在 "SYS.DBMS_JOB", line 136
ORA-06512: 在 line 5
procedure successfully completed
ORA-00900: 无效 SQL 语句
SQL> show parameter job_queue_processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes integer 10
这2句语句是干嘛的 。不太懂
job个数应该是没有限制的
jobno integer;
jobno 可以重复?
declare
jobno integer;
begin
dbms_job.submit(jobno,'pro_pfscdlmonth;',sysdate,'sysdate+5/1440');
commit;
end; 就第一个建的在操作,其他的job 都没运行。
select name,value from v$parameter where name ='job_queue_processes'; value是10
你刚刚说输出jobno怎么输出看?
建议你先理解一下存储过程的基本用法,动手试试。有疑问的可以自己先搜搜看,自主学习能力很重要,有一点问一点效率很低
看看failures字段的值