oracle之旅(一)计划任务设置
oracle之旅(一)计划任务设置
用pl/sql 登录oracle 数据库,在procedures 建立计划任务操纵登录表将每天的数据插入到临时表中
计划任务的sql如下:
create or replace procedure insertloginuser is //计划任务的名称
v_CreateLogin varchar2(2000);
v_YearMonth varchar2(10);
begin
v_YearMonth:=to_char(sysdate-1,'yyyyMM');
---临时表t_loginuser_temp 中括号是需要插入的字节段,然后从t_chmo_login_record_'||v_YearMonth||' 中查询出需要插入的语句,(登录表:t_chmo_login_record_月份 如t_chmo_login_record_201205 5月份的访问表),下面采用了几重表套表。
v_CreateLogin:= 'insert into t_loginuser_temp (logincounts,L_PLATFORM,province_code,l_date) '||
'select logincounts,lr_name,lr_provincecode,sysdate-1 from ('||
' select count(lr_loginaccount) as logincounts,lr_name,lr_provincecode from (select l.lr_loginaccount,l.lr_provincecode,l.lr_name from t_chmo_login_record_'||v_YearMonth||' l where '||
' l.create_time >=to_date(to_char(sysdate-1,''YYYY-MM-DD'')||'' 00:00:00'',''YYYY-MM-DD HH24:MI:SS'') '||
' and l.create_time <=to_date(to_char(sysdate-1,''YYYY-MM-DD'')||'' 23:59:59'',''YYYY-MM-DD HH24:MI:SS'')'||
' and l.lr_status=1) group by lr_name,lr_provincecode )';
EXECUTE IMMEDIATE v_CreateLogin;
COMMIT;
end insertloginuser;
保存后再
next date 表示下一次执行插入计划的时间
代码设置如下
begin
sys.dbms_job.submit(job => :job,
what => 'insertonlyuser;', --名称
next_date => to_date('05-05-2013 01:51:22', 'dd-mm-yyyy hh24:mi:ss'),--时间
interval => 'sysdate+1440/1440'); --执行时间的距离,这个地方是一天
commit;
end;
/