create table EMP2
(
  E_ID   NUMBER,
  E_NO   NUMBER,
  E_NAME VARCHAR2(20),
  E_SAL  NUMBER
);
insert into EMP2 values(1,222,'a',1);
insert into EMP2 values(1,222,'b',1);create or replace procedure clear_zero
is
jobid number;
begin
update emp2 set e_sal=0;
commit;
jobid:=190;
dbms_job.submit(jobid,'clear_zero',sysdate,'sysdate+1/1440');
dbms_output.put_line(jobid);
end clear_zero;SQL> begin
  2    -- Call the procedure
  3    clear_zero;
  4  end;
  5  /
报如下错误:
ORA-06550: 第 1 行, 第 104 列: 
PLS-00103: 出现符号 "END"在需要下列之一时:
 := . ( @ % ;
符号 ";" 被替换为 "END" 后继续。
ORA-06512: 在 "SYS.DBMS_JOB", line 79
ORA-06512: 在 "SYS.DBMS_JOB", line 136
ORA-06512: 在 "ABC.CLEAR_ZERO", line 8
ORA-06512: 在 line 4
请高手指点一下,谢谢了!

解决方案 »

  1.   


    试试:begin
    exec clear_zero;
    end;
    /
    ------------------------------------------------------------------------------ 
    Blog: http://blog.csdn.net/tianlesoftware 
    网上资源: http://tianlesoftware.download.csdn.net 
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 
    Q Q 群:62697716
      

  2.   

    dbms_job.submit(jobid,'clear_zero',sysdate,'sysdate+1/1440');
    这句不能出现在过程,函数中
      

  3.   

    终于弄明白了,是
    dbms_job.submit(jobid,'clear_zero',sysdate,'sysdate+1/1440');
    改为:
    dbms_job.submit(jobid,'clear_zero;',sysdate,'sysdate+1/1440');
    回复2楼,可以的,只是这样会导致死循环。