SQL> create table t_job1(id number,name varchar2(10)) 2 /表已创建。SQL> create table t_job2(id number,name varchar2(10)) 2 /表已创建。SQL> create or replace procedure p_tjob1 2 as 3 begin 4 for i in 1..5 loop 5 insert into t_job1 values(i,i||'scott'); 6 end loop; 7 end; 8 /过程已创建。SQL> edi 已写入 file afiedt.buf 1 create or replace procedure p_tjob2 2 as 3 begin 4 for i in 1..5 loop 5 insert into t_job2 values(i,i||'sys'); 6 end loop; 7* end; SQL> /过程已创建。SQL> declare 2 jobno number; 3 begin 4 dbms_job.submit(jobno,'begin p_tjob1;p_tjob2; end;',sysdate,'trunc(sysdate+1)+1/24'); 5 commit; 6 dbms_output.put_line(jobno); 7 end; 8 / 61PL/SQL 过程已成功完成。SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss' 2 /会话已更改。SQL> col what format a50 SQL> set linesize 150 SQL> select last_date,next_date,what from user_jobs where job=61 2 /LAST_DATE NEXT_DATE WHAT ------------------- ------------------- -------------------------------------------------- 2010-11-30 13:31:37 2010-12-01 01:00:00 begin p_tjob1;p_tjob2; end;SQL> select * from t_job1 2 / ID NAME ---------- ---------- 1 1scott 2 2scott 3 3scott 4 4scott 5 5scottSQL> select * from t_job2 2 / ID NAME ---------- ---------- 1 1sys 2 2sys 3 3sys 4 4sys 5 5sys
--上面兄弟的时间设置是对的,提交job就可以了
DECLARE
v_jobno NUMBER;
BEGIN
sys.dbms_job.submit(job => v_jobno,
what => ' begin p_test1; p_test2; end;', --定时执行你的两个过程
next_date => to_date('2010-12-01 01:00:00','yyyy-mm-dd hh24:mi:ss'), --第一次执行时间
interval => 'trunc(sysdate+1)+1/24') ; --每天凌晨1点
END;
/
jobno number;
begin
dbms_job.submit(jobno,'begin p_test1;p_test2; end;',sysdate,'trunc(sysdate+1)+1/24'));
commit;
end;
Error at line 1
ORA-06550: 第 1 行, 第 152 列:
PLS-00103: 出现符号 "END"
ORA-06512: 在 "SYS.DBMS_JOB", line 79
ORA-06512: 在 "SYS.DBMS_JOB", line 136
ORA-06512: 在 line 4
v_t_por_job NUMBER;
BEGIN
sys.dbms_job.submit(job => v_t_por_job,
what => 'p_count_click_services_list;p_count_click_column_list;end;', --定时执行你的两个过程
next_date => to_date('2010-12-01 01:00:00','yyyy-mm-dd hh24:mi:ss'), --第一次执行时间
interval => 'trunc(sysdate+1)+1/24') ; --每天凌晨1点
END;end去掉只执行前面的一个,后面的不执行。
v_t_por_job NUMBER;
BEGIN
sys.dbms_job.submit(job => v_t_por_job,
what => 'begin p_count_click_services_list;p_count_click_column_list;end;', --定时执行你的两个过程
next_date => to_date('2010-12-01 01:00:00','yyyy-mm-dd hh24:mi:ss'), --第一次执行时间
interval => 'trunc(sysdate+1)+1/24') ; --每天凌晨1点
END;DECLARE
v_t_por_job NUMBER;
BEGIN
sys.dbms_job.submit(job => v_t_por_job,
what => 'p_count_click_services_list;p_count_click_column_list;', --定时执行你的两个过程
next_date => to_date('2010-12-01 01:00:00','yyyy-mm-dd hh24:mi:ss'), --第一次执行时间
interval => 'trunc(sysdate+1)+1/24') ; --每天凌晨1点
END;
我已经说了,end去掉
执行的时候只之前面的第一个,第二个没有被创建。
v_t_por_job NUMBER;
BEGIN
sys.dbms_job.submit(job => v_t_por_job,
what => 'begin p_count_click_services_list;p_count_click_column_list;end;', --定时执行你的两个过程
next_date => to_date('2010-12-01 01:00:00','yyyy-mm-dd hh24:mi:ss'), --第一次执行时间
interval => 'trunc(sysdate+1)+1/24') ; --每天凌晨1点
END;
---这个或者你把其中一个放到另一个过程里面执行
SQL> create table t_job1(id number,name varchar2(10))
2 /表已创建。SQL> create table t_job2(id number,name varchar2(10))
2 /表已创建。SQL> create or replace procedure p_tjob1
2 as
3 begin
4 for i in 1..5 loop
5 insert into t_job1 values(i,i||'scott');
6 end loop;
7 end;
8 /过程已创建。SQL> edi
已写入 file afiedt.buf 1 create or replace procedure p_tjob2
2 as
3 begin
4 for i in 1..5 loop
5 insert into t_job2 values(i,i||'sys');
6 end loop;
7* end;
SQL> /过程已创建。SQL> declare
2 jobno number;
3 begin
4 dbms_job.submit(jobno,'begin p_tjob1;p_tjob2; end;',sysdate,'trunc(sysdate+1)+1/24');
5 commit;
6 dbms_output.put_line(jobno);
7 end;
8 /
61PL/SQL 过程已成功完成。SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'
2 /会话已更改。SQL> col what format a50
SQL> set linesize 150
SQL> select last_date,next_date,what from user_jobs where job=61
2 /LAST_DATE NEXT_DATE WHAT
------------------- ------------------- --------------------------------------------------
2010-11-30 13:31:37 2010-12-01 01:00:00 begin p_tjob1;p_tjob2; end;SQL> select * from t_job1
2 / ID NAME
---------- ----------
1 1scott
2 2scott
3 3scott
4 4scott
5 5scottSQL> select * from t_job2
2 / ID NAME
---------- ----------
1 1sys
2 2sys
3 3sys
4 4sys
5 5sys
NUMBER;
BEGIN
sys.dbms_job.submit(job => v_t_por_job,
what => 'p_count_click_services_list;p_count_click_column_list;', --定时执行你的两个过程
next_date => to_date('2010-12-01 01:00:00','yyyy-mm-dd hh24:mi:ss'), --第一次执行时间
interval => 'trunc(sysdate+1)+1/24') ; --每天凌晨1点
END;这为什么报错啊?
怎么在你的基础上时间改成每天凌晨1点执行啊?
ORA-06550: 第 1 行, 第 152 列:
PLS-00103: 出现符号 "END"
ORA-06512: 在 "SYS.DBMS_JOB", line 79
ORA-06512: 在 "SYS.DBMS_JOB", line 136
ORA-06512: 在 line 4
SQL> edi
已写入 file afiedt.buf 1 declare
2 jobno number;
3 begin
4 dbms_job.submit(jobno,'p_tjob1;p_tjob2;',sysdate,'trunc(sysdate+1)+1/24');
5 commit;
6 dbms_output.put_line(jobno);
7* end;
SQL> /
62PL/SQL 过程已成功完成。SQL> select last_date,next_date,what from user_jobs where job=62
2 /LAST_DATE NEXT_DATE WHAT
------------------- ------------------- -----------------------------------------
2010-11-30 13:43:47 2010-12-01 01:00:00 p_tjob1;p_tjob2;SQL> select * from t_job1
2 / ID NAME
---------- ----------
1 1scott
2 2scott
3 3scott
4 4scott
5 5scott
1 1scott
2 2scott
3 3scott
4 4scott
5 5scott已选择10行。SQL> select * from t_job2
2 / ID NAME
---------- ----------
1 1sys
2 2sys
3 3sys
4 4sys
5 5sys
1 1sys
2 2sys
3 3sys
4 4sys
5 5sys已选择10行。
我想找到问题出在哪
执行一个没事,执行两为什么出错?
ORA-06550: 第 1 行, 第 152 列:
PLS-00103: 出现符号 "END"
ORA-06512: 在 "SYS.DBMS_JOB", line 79
ORA-06512: 在 "SYS.DBMS_JOB", line 136
ORA-06512: 在 line 4