Oracle 定时任务执行存储过程【建议收藏】

article/2025/10/16 11:11:09

首先用一个完整的例子来实现定时执行存储过程。
任务目标:每小时向test表中插入一条数据。

实现方案
1.通过 oracle 中 dbms_job 完成存储过程的定时调用
2.在存储过程中完成相应的逻辑操作

实现步骤
1.创建一个测试表
create table test(dTime date);

2.创建一个存储过程

create or replace procedure p_test as 
begin 
insert into test values(sysdate); 
commit;
end; 

3.创建执行计划:每小时运行一次存储过程

 
参数说明: 
declare
jobno number;
beginDBMS_JOB.SUBMIT(jobno =>  -- jobno,定时器ID,系统自动获得,也可进行指定what => 'your_procedure;',  --调用的存储过程名称next_date => sysdate,   -- 设置的时间是由系统自动生成,可以根据自己的需要设置该时间interval => 'sysdate+1+5/(24)');--多长时间调用一次,时间间隔是每小时,根据需要可以自己设置
commit;
end;Declare i Integer; 
Begin dbms_job.submit(i,'p_test;',Sysdate,'sysdate+1/24'); 
end; select * from user_jobs where what='your_procedure;' ; --查看调度任务select * from dba_jobs_running; --查看正在执行的调度任务select * from dba_jobs; --查看执行完的调度任务--查看任务队列情况  broken:Y:没启动 N:启动
select job as jobno,next_date,next_sec,failures,broken from user_jobs where what='your_procedure;' ;

4.运行执行计划

Declare jobno Integer; 
Begin 
dbms_job.run(jobno); -- 运行制定的执行计划 
end; 

5.停止执行计划

Declare jobno Integer; 
Begin dbms_job.broken(jobno,True);   -- 停止计划,不再继续执行 dbms_job.broken(jobno,True,Sysdate+(2/24/60));   -- 停止计划,并在两分钟后继续执行 
end; 

6.删除执行计划

Declare jobno Integer; 
Begin dbms_job.remove(jobno); 
end; 

7.修改执行计划的间隔时间

Declare jobno Integer; 
Begin dbms_job.interval(jobno, 'sysdate+1/(24*60)');   -- 修改为:每分钟执行一次 
end; 

8.修改要执行的操作:

Declare jobno Integer; 
Begin dbms_job.what(jobno, what);    --指定任务号以及存储过程
end; 

9.修改下次执行时间:

declare
begin
dbms_job.next_date(jobno, next_date);  --指定任务号的时间
end

10.时间

sysdate+1              表示每天执行一次
sysdate+1/24           表示每小时执行一次
sysdate+1/(24*60)      表示每分钟执行一次
sysdate+1/(24*60*60)   表示每秒执行一次Sysdate+55,Sysdate+5/245小时,Sysdate+5/24/605分钟,Sysdate+5/24/60/605

.INTERVAL参数常用值示例
每天午夜12点 ‘‘TRUNC(SYSDATE + 1)’’

每天早上8点30分 ‘‘TRUNC(SYSDATE + 1) + (860+30)/(2460)’’

每星期二中午12点 ‘‘NEXT_DAY(TRUNC(SYSDATE ), ‘’’‘TUESDAY’’’’ ) + 12/24’’

每个月第一天的午夜12点 ‘‘TRUNC(LAST_DAY(SYSDATE ) + 1)’’

每个季度最后一天的晚上11点 ‘‘TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), ‘‘Q’’ ) -1/24’’

每星期六和日早上6点10分 ‘‘TRUNC(LEAST(NEXT_DAY(SYSDATE, ‘’’‘SATURDAY"), NEXT_DAY(SYSDATE, “SUNDAY”))) + (6×60+10)/(24×60)’’

每3秒钟执行一次 ‘sysdate+3/(246060)’

每2分钟执行一次 ‘sysdate+2/(24*60)’

每分钟执行

Interval => TRUNC(sysdate,‘mi’) + 1/ (24*60) --每分钟执行

interval => ‘sysdate+1/(24*60)’ --每分钟执行

interval => ‘sysdate+1’ --每天

interval => ‘sysdate+1/24’ --每小时

interval => ‘sysdate+2/24*60’ --每2分钟

interval => ‘sysdate+30/246060’ --每30秒

2:每天定时执行

Interval => TRUNC(sysdate+1) --每天凌晨0点执行

Interval => TRUNC(sysdate+1)+1/24 --每天凌晨1点执行

Interval => TRUNC(SYSDATE+1)+(860+30)/(2460) --每天早上8点30分执行

3:每周定时执行

Interval => TRUNC(next_day(sysdate,‘星期一’))+1/24 --每周一凌晨1点执行

Interval => TRUNC(next_day(sysdate,1))+2/24 --每周一凌晨2点执行

4:每月定时执行

Interval =>TTRUNC(LAST_DAY(SYSDATE)+1) --每月1日凌晨0点执行

Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24 --每月1日凌晨1点执行

5:每季度定时执行

Interval => TRUNC(ADD_MONTHS(SYSDATE,3),‘q’) --每季度的第一天凌晨0点执行

Interval => TRUNC(ADD_MONTHS(SYSDATE,3),‘q’) + 1/24 --每季度的第一天凌晨1点执行

Interval => TRUNC(ADD_MONTHS(SYSDATE+ 2/24,3),‘q’)-1/24 --每季度的最后一天的晚上11点执行

6:每半年定时执行

Interval => ADD_MONTHS(trunc(sysdate,‘yyyy’),6)+1/24 --每年7月1日和1月1日凌晨1点

7:每年定时执行

Interval =>ADD_MONTHS(trunc(sysdate,‘yyyy’),12)+1/24 --每年1月1日凌晨1点执行

好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,我是老贺,我们下期见~~

在这里插入图片描述


http://chatgpt.dhexx.cn/article/iiwQ2nq1.shtml

相关文章

【Mysql】MySQL 用户执行存储过程的权限

问题 运行存储过程报错: 原因 查询资料: 1305错误,由于当前用户没用权限,对用户进行授权后可以执行。 解决 MySQL创建存储过程/函数需要的权限: alter routine---修改与删除存储过程/函数 create routine--创建…

goland 使用 gorm 执行 存储过程 : go语言 执行存储过程

使用 gorm 执行 存储过程 初安装依赖代码: 附存储过程图片存储过程代码(创建) 表结构表结构图表结构代码 初 最近遇到要写存储过程需求,使用 大佬写的 框架 gorm 来完成。简直是方便的不行: 直接上代码: …

JDBC之CallableStatement执行存储过程

​ 在前面的一篇文章中,我们学习使用Statement、PreparedStatement来完成对数据表的增删改查。而存储过程作为数据库的重要组成部分(痛点,当时学的时候头发都掉了好几根😭),那JDBC是如何执行存储过程呢&…

mysql创建定时任务执行存储过程

存储过程已添加好:https://blog.csdn.net/YXWik/article/details/127283316 1.创建定时器用来执行存储过程函数 create event delete_data on schedule every 10 second do call delete_data();这里的第一行代表的创建名称为delete_data的事件 第二行是执行周期为…

Oracle 定时任务执行存储过程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、创建存储过程一、创建定时任务 一、创建存储过程 CREATE OR REPLACE PROCEDURE TESTCREATE AS --存储过程名称I INT : 1; --变量 BEGINWHILE I < 10 LOOP -…

oracle执行存储过程参数,Oracle 执行存储过程四种方法(带参数 不带参数)

1.如果是命令窗口就用exec 存储过程名&#xff1a; 1 EXEC procedure;--procedure是存储过程名 2.如果是 SQL窗口就用 begin 存储过程名 end; 1 2 3 begin procedure;--procedure是存储过程名 end; 3.如果是程序中调用就用 call 存储过程名 &#xff0c;举个栗子&#xff1…

plsql定时执行存储过程

1、创建定时向表中插入数据的存储过程&#xff0c;名为testJob。 CREATE OR REPLACE PROCEDURE "testJob" AS BEGIN EXECUTE IMMEDIATE INSERT INTO TABLE_HIS SELECT * FROM TABLE_AI; COMMIT; END; 2、使用plsql找到定时器对应的DBMS_Jobs文件夹&#xff0c;…

SQLserver存储过程简单写法与设置定时执行存储过程方法

最近工作中需要写SQLserver的存储过程&#xff0c;第一次使用&#xff0c;简单记录下&#xff0c;以防遗忘。 在SQLserver可视化工具中编写&#xff0c;我的工具如下图&#xff1a; 首先点击你的数据库&#xff0c;找到可编程性&#xff0c;在可编程性里面右击存储过程-->点…

symlink() 函数

查看更多 https://www.yuque.com/docs/share/10f959a4-bd7e-47a9-ad78-11a1310613f3

Install fail! Error: EPERM: operation not permitted, symlink

这个是在安装lodash的时候报错的情况 尝试了下方命令&#xff0c;但是还是有误 在这里可能是因为npm缓存的问题&#xff0c;我先删除了 C:\Users\abc(自己电脑的用户名) 文件夹下的 .npmrc 文件&#xff0c;但是没反应。然后运行了下方的命令&#xff1a; 运行&#xff1a;…

error: eperm: operation not permitted, symlink

查询当前配置的镜像 npm get registry > https://registry.npmjs.org/ 设置成淘宝镜像 npm config set registry http://registry.npm.taobao.org/

Linux Symbolic Links(软链接)

linux 中的链接有两种&#xff0c;分别是 Hard Links&#xff08;硬链接&#xff09;和Symbolic Links(软链接)。 1. 什么是硬链接、软链接&#xff1f; 硬链接&#xff1a;在另外一个位置创建源文件的链接文件&#xff0c;相当于复制了一份&#xff0c;占用资源会倍增。硬链…

linux link/symlink/unlink 硬连接和软连接介绍

文章目录 硬连接和软连接的区别硬连接软连接 链接命令lnln指令参数含义例子 硬链接函数link()符号链接函数symlink()解除链接函数unlink() link/symlink/unlink函数头文件为#include <unistd.h> 硬连接和软连接的区别 硬连接 硬连接指通过索引节点来进行连接。 在Lin…

​2021-12-13 Android 的 init.rc 文件​里面的symlink,把<target>链接到目录<path>下。

一、symlink <target> <path>&#xff0c;把<target>链接到目录<path>下。 二、来看一下实际的例子 三、参考文章&#xff1a; Android 的 init.rc 文件简介 &#xff08;转&#xff09; - 陈wei的个人空间 - OSCHINA - 中文开源技…

pnpm安装使用教程以及pnpm node版本管理以及EPERM operation not permitted symlink问题解决

pnpm安装使用教程以及pnpm node版本管理以及EPERM operation not permitted symlink问题解决 pnpm&#xff1a;目前来看是一个大趋势&#xff0c;如&#xff1a;nest-cli目前除了npm、yarn增加了pnpm 优势&#xff1a;节约磁盘空间并提升安装速度&#xff08;改善node_modules…

Cannot create symlink/symbolic to `xxx': Operation not supported

1、Cannot create symlink to xxx: Operation not supported 在虚拟机的共享目录中&#xff0c;解压内核源码&#xff0c;试过了几种解压方法都报出如下错误&#xff1a; tar: linux-4.15/tools/testing/selftests/powerpc/vphn/vphn.h: Cannot create symlink to ../../../.…

Flutter报错Building with plugins requires symlink support的解决方法

错误 Building with plugins requires symlink support. Please enable Developer Mode in your system settings. Runstart ms-settings:developers to open settings. 原因 这个错误表示你的系统尚未启用开发者模式,所以无法使用Flutter的插件功能。 Flutter插件会通过符号…

硬链接,软链接,link,rename,symlink,opendir和readdir

什么是硬链接 struct stat {nlink_t st_nlink; /* Number of hard links};stat结构体就有一个成员变量----硬链接数 使用ln命令就可以创建硬链接 创建硬链接&#xff0c;就是再为文件创建一个名字 每创建一个硬链接&#xff0c;文件就多一个文件名&#xff0c;硬件链…

符号链接symlink_什么是符号链接或符号链接? 如何为Windows和Linux创建Symlink?

符号链接symlink Symbolic Links are also known as Symlinks. Symlinks are used to create a shortcut for a given file or folder. Symlinks are very useful for different purposes which also prevents copy the same data over and over again. In this tutorial, we w…

Visual Studio2019使用nmake编译调用libcurl库

编译 1.下载地址&#xff1a; curl downloads 我下载的是7.61.0 2.编译&#xff1a; 使用的是&#xff1a;VS2019 x64 本机工具命令提示&#xff0c;当然如果想编译成X86的库&#xff0c;可以选择VS2013 x86 本机工具命令提示或者VS2019 x64 兼容工具命令提示。 打开VS201…