如何在 Oracle 调度程序作业中调用存储过程

Pyd*_*aju 1 oracle stored-procedures oracle-11g-r2 plsql jobs

我想在 Oracle 调度程序作业中调用存储过程。我的程序和工作如下所示:

存储过程

create or replace PROCEDURE emp_test                                              
IS
begin

delete from  emp;
insert into emp(empid,empname)
select empid1,empname1 from emp_temp;
end;
Run Code Online (Sandbox Code Playgroud)

工作

BEGIN
dbms_scheduler.create_job (
job_name => 'emp_test_JOB',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN
CALL emp_test();
END;',
start_date => SYSTIMESTAMP,
enabled => true,
repeat_interval => 'FREQ=DAILY');
END;
Run Code Online (Sandbox Code Playgroud)

我可以像CALL emp_test()不使用工作一样调用过程。

当我在上面的作业中使用相同的东西时,作业已成功创建,但程序未运行,未插入行。我需要运行这个作业并且应该插入行;有人可以帮我吗?

a1e*_*x07 6

CALL创建作业时不需要(以及不带参数的过程的括号)。我也会INTERVAL=1明确指定 。

BEGIN 
   dbms_scheduler.create_job ( 
    job_name => 'emp_test_JOB', 
    job_type => 'PLSQL_BLOCK', 
    job_action => 'emp_test;', 
    start_date => SYSTIMESTAMP, 
    enabled => true, 
    repeat_interval => 'FREQ=DAILY;INTERVAL=1'
   ); 
END;
Run Code Online (Sandbox Code Playgroud)