当前位置: 首页 > article >正文

初次使用Oracle存储过程,定时任务--记录

业务需求中需要每个小时从一个视图当中取数据至另一个表中

因此用到了存储过程+定时任务

思路:

        1.使用存储过程将视图中的数据转存到指定表中

        2.用定时任务触发存储过程,设置每隔一小时执行

存储过程

首先,什么是存储过程:存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。

那么我们这里实际上就是需要使用存储过程,先从视图中把数据转存到指定表

写这么一个sql完成数据的复制转移

使用方法: 直接编写sql语句,可以看下我这里说的Oracle怎么写存储过程的定时任务执行语句_oracle定时任务执行produce-CSDN博客

declare
    job number;
begin
    DBMS_JOB.SUBMIT(
        JOB => job, 
        WHAT => 'PROC_PHD_DATA_HOURLY;', 
        NEXT_DATE => to_date('2024-12-26 15:00:00', 'YYYY-MM-DD HH24:MI:SS'), 
        INTERVAL => 'SYSDATE + 1/24'
    );
    commit;
end;
/

可能遇到的问题:  有可能你的存储过程在后续的使用中你发现无法执行,所以,可以提前测试一下

PLSQL中,可以右键单击你的存储过程,而后点击'TEST' 测试

走一遍你的存储过程(后面也可以通过定时任务直接手动执行一次看是否报错)

可参考: Oracle 存储过程测试 - 癫狂编程 - 博客园

定时任务

定时任务可以帮助我们自定义存储过程的执行时间

参考:

Oracle怎么写存储过程的定时任务执行语句_oracle定时任务执行produce-CSDN博客

需要注意的是,当next_date变成4000/1/1 ,点击预览sql,发现broken被选中,失败次数=16

这是因为系统发现执行异常后,连续失败达16次后,会将next_date变成4000/1/1,即不再让该JOB执行了,该JOB已被数据库认定为失效JOB

这时候应该去先查看存储过程是否有问题,通过上面的TEST去debug

找到问题后编辑JOB,手动更改NEXT_DATE,手动执行一次,测试是否修改了bug


http://www.kler.cn/a/461027.html

相关文章:

  • 产品经理2025年展望
  • 创新引领未来,科技照亮梦想
  • Spring Boot缓存
  • 【MySQL】第一弹----库的操作及数据类型
  • 网络安全问题解答
  • 尚硅谷Vue3入门到实战 —— 02 编写 App 组件
  • axios拦截器底层实现原理
  • 基于SpringBoot+Vue的旅游推荐系统
  • [pdf、epub]260道《软件方法》强化自测题业务建模需求分析共216页(202412更新)
  • Doris安装部署
  • 实现单例模式的五种方式
  • jQuery学习笔记1
  • 无人机任务载荷系统之电子对抗技术!
  • 使用PyTorch实现的二分类模型示例,综合了CNN、LSTM和Attention技术
  • MyBatis-Plus 中的分页插件配置
  • 在C++中,dynamic_cast是一种用于在类的继承体系中进行安全向下转型
  • 搭建ZooKeeper分布式集群
  • 2、单片机、CC2530、zigbee期末考试选择、填空题含答案
  • 如何确保Kafka集群的高可用?
  • Cursor小试1.生成一个网页的接口请求工具