我有一个存储过程 proc1 
create or replace procedure proc1
(recode out number,
 remsg  out varchar2)
AS
BEGIN
---执行SQL
commit;
recode =0;
remsg = 'success';
exception
rollback;
recode =1;
remsg = 'fail';
end proc1;
存储过程编译通过
然后 想用job 定时调用这个存储过程
BEGIN 
 SYS.DBMS_JOB.REMOVE(3);
COMMIT;
END;
/
DECLARE
  X NUMBER;
BEGIN
  SYS.DBMS_JOB.SUBMIT
  ( job       => X 
   ,what      => 'proc1(recode /* number*/,
                         remsg /*varchar2*/);'
   ,next_date => to_date('26-08-2009 06:00:00','dd/mm/yyyy hh24:mi:ss')
   ,interval  => 'trunc(sysdate + 7) + 6/24'
   ,no_parse  => FALSE
  );
执行报错,说 无法识别 recode,
我想问一下各位高手 如何 写 调用 有输出 存储过程的 job?

解决方案 »

  1.   


    DECLARE
      X NUMBER;
    BEGIN
      SYS.DBMS_JOB.SUBMIT(job       => X,
                          what      => 'declare  
                                            recode number;
                                            remsg varchar2(100);
                                        begin 
                                            proc1(recode,remsg); 
                                        end;',
                          next_date => to_date('26-08-2009 06:00:00',
                                               'dd/mm/yyyy hh24:mi:ss'),
                          interval  => 'trunc(sysdate + 7) + 6/24',
                          no_parse  => FALSE);
    commit;
    end;