Oracle

如何在 Oracle 調度程序作業中呼叫儲存過程

  • March 15, 2018

我想在 Oracle 調度程序作業中呼叫儲存過程。我的程序和工作如下所示:

儲存過程

create or replace PROCEDURE emp_test                                              
IS
begin

delete from  emp;
insert into emp(empid,empname)
select empid1,empname1 from emp_temp;
end;

工作

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;

我可以在CALL emp_test()不使用工作的情況下呼叫程序。

當我在上面的作業中使用相同的東西時,作業已成功創建但程序未執行,未插入行。我需要執行這個工作並且應該插入行;有人能幫幫我嗎?

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;

從調度程序作業執行儲存過程的最簡單方法是更改​​ job_type。

休息你可以使用你自己的價值觀。試試這個並回發結果。

例子:

job_type             => 'STORED_PROCEDURE',
job_action           => '"OWNER"."PROCEDURE_NAME"',

引用自:https://dba.stackexchange.com/questions/118138