use*_*492 3 oracle plsql procedure
我在oracle中创建了一个简单的过程.伪代码是
CREATE OR REPLACE
procedure update_summary
begin
delete from summary table;
make different calculations from different tables, insert values row by row in
summary table;
end;
Run Code Online (Sandbox Code Playgroud)
我希望这个程序每小时自动运行,因为如果我从我的应用程序的前端调用它,它安静的时间饥饿,用户认为该页面已被挂起.帮助将受到高度赞赏.
使用DBMS_SCHEDULER
并创建类似于此的作业:
begin
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'CALC_JOB',
job_type => 'STORED_PROCEDURE',
job_action => 'UPDATE_SUMMARY',
start_date => current_timestamp,
repeat_interval => 'FREQ=hourly;',
enabled => true);
end;
/
Run Code Online (Sandbox Code Playgroud)
更多细节(特别是关于repeat_interval
手册中的参数:http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_sched.htm#CIHEHDHA
这begin .. end
是必要的,因为SQL*PLus不允许execute
命令跨越多行.如果您使用的是其他SQL客户端,则可能不需要这样.
我通常还会为作业设置日志记录级别,以便查看更多信息 USER_JOB_RUN_DETAIL
execute dbms_scheduler.set_attribute(name => 'CALC_JOB', attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_FULL);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6524 次 |
最近记录: |