我放鬆了我的想法。我有一個名爲foo()的過程,它不帶任何參數。我想每3分鐘執行一次,比如說。我寫的代碼如下所示:DBMS調度程序oracle - 如何執行程序
BEGIN
dbms_scheduler.create_job(job_name => FooJob,
job_type => 'PLSQL_BLOCK',
job_action => '
BEGIN
foo();
END;',
start_date => SYSTIMESTAMP,
repeat_interval => 'FREQ=MINUTELY;INTERVAL=3;BYHOUR=17;BYMINUTE=35;',
enabled => TRUE
comments => 'A comment.');
END;
/
這給了我一個錯誤:應該定義標識符'applyjobpenalities'。
我在此基礎上例如:How to execute a procedure with DBMS_SCHEDULER.CREATE_JOB procedure
另外:
1)如何FOO的執行之後執行dbms_output.put_line()
();?是否可以直接放這條線?
2)如何檢查程序foo()
是否(正在)代表調度程序執行?
UPDATE: 好了,所以我所做的就是:
1)我在SQL類型Plus的設置SERVEROUTPUT上「
2)我做了一個程序:
create or replace procedure proc1
IS
BEGIN
dbms_output.put_line('sth');
end;
/
3)我將調度程序代碼更改爲:
BEGIN
dbms_scheduler.create_job( job_name => 'JustATest',
job_type => 'PLSQL_BLOCK',
job_action =>
'BEGIN
proc1();
END;',
start_date => systimestamp + interval '10' second,
repeat_interval => 'FREQ=SECONDLY',
enabled => TRUE);
END;
/
但我在SQL Plus中看不到任何結果。我錯過了什麼?這兩個過程都成功地編譯和當我輸入我可以看到這個工作:
SELECT * FROM DBA_SCHEDULER_JOBS;
閱讀文檔 - https://docs.oracle.com/cd/B28359_01/server.111/b28310/schedadmin002.htm#ADMIN12039請顯示完整的錯誤堆棧跟蹤。您無法從後臺作業中「查看」dbms_output。 – OldProgrammer
proc1正在後臺運行。您看不到dbms_output的輸出。不知道如何讓這個更清楚。如果需要,寫入日誌表。 – OldProgrammer
我現在明白了,謝謝。但是,如果我使用其他更新數據的過程,我沒有看到它實際運行。那怎麼了? – monterinio