Orcle定时生成表数据作业

--建表
create table table41(
    id   varchar2(64) not null,  --主键
    col1 varchar2(2000),
    col2 varchar2(2000),
    col3 varchar2(2000),
    col4 int,
    col5 timestamp,
    col6 number(19,2),
    col7 NUMBER(5),
    col8 NUMBER(3),
    synTime blob,
    constraint table41 primary key (id)
);

--select * from  table4;
--select * from  table41;
--exec sp_table41_clear;
--exec sp_table41;

--创建数据的存储过程--
CREATE OR REPLACE PROCEDURE sp_table41 IS
  CURSOR C_EMP IS
  SELECT * FROM table4;  
  C_ROW C_EMP%ROWTYPE; 
  BEGIN  
    FOR C_ROW IN C_EMP LOOP  
       insert into table41(id,col1,col2,col3,col4,col5,col6,col7,col8) 
       values((select sys_guid() from dual),C_ROW.col1,C_ROW.col2,C_ROW.col3,C_ROW.col4,sysdate,C_ROW.col6,C_ROW.col7,C_ROW.col8);
  END LOOP; 
END sp_table41;

--清空数据的存储过程--
CREATE OR REPLACE PROCEDURE sp_table41_clear IS
BEGIN
  delete from table41;
END sp_table41_clear;

--存储过程清除数据和生成数据--
CREATE OR REPLACE PROCEDURE sp_table41_all IS
BEGIN
  sp_table41_clear;--清除数据
  sp_table41; --生成数据
END sp_table41_all;

--存储过程清除数据和生成数据(无删除的存储过程)--
CREATE OR REPLACE PROCEDURE sp_table41_all2 IS
BEGIN
  delete from table41;--清除数据
  sp_table41; --生成数据
END sp_table41_all2;
--定时器作业-- 
declare my_job number;
begin sys.dbms_job.submit(
    my_job,
--任务名称
    'sp_table41_all;',--执行的过程
    sysdate,--执行时间
    --'sysdate+1/(24*60)'--每天1分钟运行一次
    'TRUNC(SYSDATE+1)+(1*60+30)/(24*60)'--每天1点半运行一次
    --'TRUNC(LAST_DAY(SYSDATE)+5),TRUNC(LAST_DAY(SYSDATE)+6),TRUNC(LAST_DAY(SYSDATE)+7),TRUNC(LAST_DAY(SYSDATE)+8),TRUNC(LAST_DAY(SYSDATE)+9),TRUNC(LAST_DAY(SYSDATE)+10)'--每月的第5天到第10天的1点生成运行
);
end;

--查询作业,取JOB字段值--
select * from dba_jobs;
select * from user_jobs;

--开始作业--
begin
dbms_job.run(
4);--41为任务的id
end;

--删除作业--
begin
dbms_job.remove(
4);
end;
原文地址:https://www.cnblogs.com/xmqa/p/7149571.html