Oracle
如何在 Oracle 調度程序作業中呼叫儲存過程
我想在 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"',