Orale利用定时任务执行存储过程函数,实现定时创建表结构

Orale利用定时任务执行存储过程函数,实现定时创建表结构

今天我们要根据某个表,按月份生成 表名_20200301的格式,比如下图的T_CAL_COURT_DAILY,
我要根据每个月份生成月份表,T_CAL_COURT_DAILY_202001,T_CAL_COURT_DAILY_202002
这样的
在这里插入图片描述

1.先写存储过程

CREATE OR REPLACE
procedure TEST
Authid Current_User
as
tabname varchar(200);
begin
select 'T_CAL_COURT_DAILY_' || to_char(sysdate, 'yyyymmddhh24mi') into tabname from
dual; //T_CAL_COURT_DAILY为表名,要生成T_CAL_COURT_DAILY_20101010的格式,这一句的作用是生成表名
//并把表名赋值到上面的变量tabname中
execute immediate 'create table ' || tabname ||'tablespace CDB_MDMS as select
* from T_CAL_COURT_DAILY where 1 != 1';//执行创建表名的语句,||相当于JAVA中的+,连接两个字符串
* //where 1!=1可以使select语句只查询出字段名,不查数据,T_CAL_COURT_DAILY为表名
* //CDB_MDMS 是空间名
commit;
end;

2.创建定时任务

 declare  
  job_test number;  //job_test 为定时任务名称
begin  
  sys.dbms_job.submit(job_test, 'test;', sysdate,'sysdate+1/1440');//test为存储过程函数名称
  //sysdate,'sysdate+1/1440'表示每分钟执行一次,sys.dbms_job是系统中的存储定时任务的空间结构,可以不用管
 end;

执行完上面的代码,已经生成了定时任务,并且每次执行定时任务都会去调用存储过程的函数,
可以执行下面的代码看一下定时任务是否执行成功

SELECT * FROM dba_jobs; //可以查询所有定时任务
删除定时任务
begin dbms_job.remove(23); commit;end; //23位定时任务id,在上一条命令中可以查出来

我用的navicat,执行完创建定时任务的代码后函数里会多一个函数TEST,可以先点击右键,有个函数测试,可以先测试一下函数是否能执行成功再创建定时任务
创建完后函数里面就会多一个

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值