从PL / SQL Job调用存储过程

时间:2014-03-31 22:48:49

标签: oracle stored-procedures plsql syntax-error

在sqlplus中我创建了程序,用int值填充我的表GeneratedData ......

create procedure fillGeneratedData (x in int) as
begin
for i in 1..x loop
insert into GeneratedData values (i);
end loop;
end;
/

我想创建job,whitch调用此过程,但它会抛出错误并且不会调用该过程......

BEGIN
sys.dbms_scheduler.create_job( 
job_name => 'job1',
job_type => 'PLSQL_BLOCK',
job_action => 'begin exec fillGeneratedData(50000); end;',
repeat_interval => 'FREQ=MINUTELY;INTERVAL=2',
start_date => systimestamp at time zone 'Europe/Belgrade',
auto_drop => FALSE,
enabled => TRUE);
END;

sqlplus说PL / SQL程序成功完成,但是当我查看警报日志时,它会抛出错误:

2014年4月1日星期二00:50:45 文件c:\ app \ adbsuser \ diag \ rdbms \ orcl \ orcl \ trace \ orcl_j000_7516.trc中的错误: ORA-12012:自动执行作业74677时出错 ORA-06550:第1行第734行: PLS-00103:遇到符号""期待以下之一:

:=。 (@%; 符号";"取代了#34;"接着说。 文件c:\ app \ adbsuser \ diag \ rdbms \ orcl \ orcl \ trace \ orcl_j000_7516.trc中的错误: ORA-12012:自动执行作业74679时出错 ORA-06550:第1行第734行: PLS-00103:遇到符号" FILLGENERATEDDATA"期待以下之一:

:=。 (@%; 符号":="取代了#34; FILLGENERATEDDATA"继续。

有人能帮助我吗?

非常感谢。

1 个答案:

答案 0 :(得分:3)

首先,PL / SQL块无效。如果你试图只运行

begin 
  exec fillGeneratedData(50000); 
end;
你会收到错误。您不在PL / SQL块中使用exec - 这是一个SQL * Plus命令。您的PL / SQL块只是

begin 
  fillGeneratedData(50000); 
end;