oracle job如何定时执行带参数(输入参数)的存储过程 如题!高手帮帮忙!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在job上设置定时运行的时间和间隔时间 给你个例子DECLARE X NUMBER;BEGIN SYS.DBMS_JOB.SUBMIT ( job => X ,what => 'SP_MAKE_AP030 (sysdate-3/* 输入参数1 DATE */ , sysdate/*输入参数2 DATE */ , 0 /* 输入参数3 NUMBER */ , ''SYSTEM''/* 输入参数4 VARCHAR2 */ );' ,next_date => to_date('22/12/2009 06:00:00','dd/mm/yyyy hh24:mi:ss') ,interval => 'trunc(SYSDATE+1)+1/4' ,no_parse => FALSE ); SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));COMMIT;END; to: hebo2005 我按你给我的例子写了一个类似的报错啊!这是我写的 表: create table t(name varchar2(10),time date); 存储过程: create or replace procedure pro_asd( name in varchar2 ) is begin insert into tt values(sysdate,name); end; job: variable job1 number; begin sys.dbms_job.submit(job =>:job1, what =>'pro_asd('name')', next_date =>sysdate, interval =>'sysdate+1/1440', no_parse =>false); sys.dbms_output.put_line('success'); commit; end; 执行的时候报错:是不是传值(name)传的不对啊? to: hebo2005 我按你给我的例子写了一个类似的报错啊! 这是我写的 表: create table t(time date,name varchar2(10)); (刚才写错了) 存储过程: create or replace procedure pro_asd( name in varchar2 ) is begin insert into tt values(sysdate,name); end; job: variable job1 number; begin sys.dbms_job.submit(job => :job1, what => 'pro_asd( 'name ') ', next_date => sysdate, interval => 'sysdate+1/1440 ', no_parse => false); sys.dbms_output.put_line( 'success '); commit; end; 执行的时候报错:是不是传值(name)传的不对啊? name 用上两个单引''name'' to:shiyiwan加上两个单引 也报错ORA-06550: 第 1 行, 第 105 列: PLS-00103: 出现符号 "END"在需要下列之一时: := . ( % ;符号 ";" 被替换为 "END" 后继续。ORA-06512: 在"SYS.DBMS_JOB", line 79ORA-06512: 在"SYS.DBMS_JOB", line 136ORA-06512: 在line 3 把JOB里面的这一行 what => 'pro_asd( 'name ') ', 改成what => 'pro_asd( ''name''); ',再试下 加上单引号也报错ORA-06550: 第 1 行, 第 105 列: PLS-00103: 出现符号 "END"在需要下列之一时: := . ( % ; 符号 ";" 被替换为 "END" 后继续。 ORA-06512: 在"SYS.DBMS_JOB", line 79 ORA-06512: 在"SYS.DBMS_JOB", line 136 ORA-06512: 在line 3 what里面要用分号结束。改为what => 'pro_asd(''name'');', variable job1 number; begin sys.dbms_job.submit(job => :job1, what => 'pro_asd( ''name '') ', next_date => sysdate, interval => 'sysdate+1/1440 ', no_parse => false); sys.dbms_output.put_line( 'success '); commit; end; 谢谢了,追加10分给shiyiwan和tKF12183 for update使用問題 关于绑定变量的用法 在使用spotlight on oracle時報錯無法使用連接DB 请教sql问题,刚才那位仁兄的语句看似对了,但结果还是不行啊 值过多,报错 急求一条 sql 语句 还有一个问题,在linux下,要对oracle9i进行数据备份,一定要启动Intelligent Agent吗?还有其他方式吗? 关于累计的问题,如何用SQL语句实现 oracle pl/sql怎么写SP实现增量抽取 关于DBWR与commit的问题 如何不用hash比较实现数据仓库拉链算法 关于DBlink与游标一个问题
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'SP_MAKE_AP030
(sysdate-3/* 输入参数1 DATE */ ,
sysdate/*输入参数2 DATE */ ,
0 /* 输入参数3 NUMBER */ ,
''SYSTEM''/* 输入参数4 VARCHAR2 */ );'
,next_date => to_date('22/12/2009 06:00:00','dd/mm/yyyy hh24:mi:ss')
,interval => 'trunc(SYSDATE+1)+1/4'
,no_parse => FALSE
);
SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
COMMIT;
END;
这是我写的
表: create table t(name varchar2(10),time date);
存储过程:
create or replace procedure pro_asd(
name in varchar2 )
is
begin
insert into tt values(sysdate,name);
end;
job: variable job1 number;
begin
sys.dbms_job.submit(job =>:job1,
what =>'pro_asd('name')',
next_date =>sysdate,
interval =>'sysdate+1/1440',
no_parse =>false);
sys.dbms_output.put_line('success');
commit;
end;
执行的时候报错:是不是传值(name)传的不对啊?
这是我写的
表: create table t(time date,name varchar2(10)); (刚才写错了)
存储过程:
create or replace procedure pro_asd(
name in varchar2 )
is
begin
insert into tt values(sysdate,name);
end;
job: variable job1 number;
begin
sys.dbms_job.submit(job => :job1,
what => 'pro_asd( 'name ') ',
next_date => sysdate,
interval => 'sysdate+1/1440 ',
no_parse => false);
sys.dbms_output.put_line( 'success ');
commit;
end;
执行的时候报错:是不是传值(name)传的不对啊?
加上两个单引 也报错
ORA-06550: 第 1 行, 第 105 列:
PLS-00103: 出现符号 "END"在需要下列之一时:
:= . ( % ;
符号 ";" 被替换为 "END" 后继续。
ORA-06512: 在"SYS.DBMS_JOB", line 79
ORA-06512: 在"SYS.DBMS_JOB", line 136
ORA-06512: 在line 3
改成what => 'pro_asd( ''name''); ',再试下
ORA-06550: 第 1 行, 第 105 列:
PLS-00103: 出现符号 "END"在需要下列之一时:
:= . ( % ;
符号 ";" 被替换为 "END" 后继续。
ORA-06512: 在"SYS.DBMS_JOB", line 79
ORA-06512: 在"SYS.DBMS_JOB", line 136
ORA-06512: 在line 3
what => 'pro_asd(''name'');',
begin
sys.dbms_job.submit(job => :job1,
what => 'pro_asd( ''name '') ',
next_date => sysdate,
interval => 'sysdate+1/1440 ',
no_parse => false);
sys.dbms_output.put_line( 'success ');
commit;
end;