Oracle定时任务小案例
需求简述
一个数据表中包含此数据的录入时间,此数据的初始状态是有效,五天后系统自动置该数据的状态为无效。
方案
- 写一个存储过程,用于更新字段(改状态);
- 写一个job,用于定时执行存储过程;
方案逻辑
存储过程
- 前提条件:此数据的状态为有效状态;
- 获取当前系统时间;
- 获取数据输入时间;
- 计算二者差值;如果二者差值大于5,置数据状态为无效,反之,不做操作。
Job
- 设置每天0:00自动执行存储过程;(为了尽快看到测试结果,这里设置时间为每分钟执行一次job。)
测试小案例
- 创建表
--创建表
create table test(name varchar2(30), passwd varchar2(30),inputtime date,status varchar2(2));
- 插入数据
--插入数据
declare
c_name varchar2(30) := 'TestUser';
c_pass varchar2(30) := 'TestPass';
c_inputTime date;
c_status varchar2(2) := '01';
begin
select sysdate into c_inputTime from dual;
for i in 0..99 loop
c_name := c_name || to_char(i);
c_pass := c_pass || to_char(i);
c_inputTime := c_inputTime-1;
dbms_output.put_line('name='||c_name||', passWd='||c_pass||', inputtime='||c_inputTime||' status='||c_status);
insert into test (name,passwd,inputtime,status) values (c_name,c_pass,c_inputTime,c_status);
c_name := 'TestUser';
c_pass := 'TestPass';
end loop;
commit;
end;
- 存储过程
--创建存储过程,用于更新status
create or replace procedure pro_test is
begin
declare
NUM number :=5;
d date;
cursor cur_test is
select name,inputtime,status from test where status='01' order by inputtime desc;--创建游标,用于存储结果集
begin
select sysdate into d from dual;--获取系统时间
for temp in cur_test
loop
if round(to_number(d-temp.inputtime))>NUM then
update test set status='00' where name = temp.name;--更新表数据
end if;
end loop;
commit;--提交事务
end;
end pro_test;
- 定时任务
declare
job_test number;
begin
dbms_job.submit(job_test, 'pro_test;',sysdate, 'sysdate+1/24/60');--每分钟执行一次
end;
Oracle定时任务小案例的更多相关文章
- Eclipse使用JDBC小案例
JDBC(Java Database Connectivity:Java访问数据库的解决方案)定义一套标准接口,即访问数据库的通用API,不同数据库厂商根据各自数据的特点去实现这些接口. JDBC是J ...
- 机械表小案例之transform的应用
这个小案例主要是对transform的应用. 时钟的3个表针分别是3个png图片,通过setInterval来让图片转动.时,分,秒的转动角度分别是30,6,6度. 首先,通过new Date函数获取 ...
- 最简单的一个Oracle定时任务
最简单的一个Oracle定时任务一.在PLSQL中创建表:create table HWQY.TEST(CARNO VARCHAR2(30),CARINFOID NUMBER) 二.在PLSQ ...
- shell讲解-小案例
shell讲解-小案例 一.文件拷贝输出检查 下面测试文件拷贝是否正常,如果cp命令并没有拷贝文件myfile到myfile.bak,则打印错误信息.注意错误信息中basename $0打印脚本名.如 ...
- [jQuery学习系列六]6-jQuery实际操作小案例
前言最后在这里po上jQuery的几个小案例. Jquery例子1_占位符使用需求: 点击第一个按钮后 自动去check 后面是否有按钮没有选中, 如有则提示错误消息. <html> &l ...
- oracle定时任务
一.简介 当我们需要oracle数据库定时自动执行一些脚本,或进行数据库备份.数据库的性能优化,包括重建索引等工作是需要使用到定时任务. 定时任务可以使用以下两种完成. 1.操作系统级的定时任务,wi ...
- 02SpringMvc_springmvc快速入门小案例(XML版本)
这篇文章中,我们要写一个入门案例,去整体了解整个SpringMVC. 先给出整个项目的结构图:
- React.js入门小案例
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title&g ...
- SqlDependency缓存数据库表小案例
SqlDependency的简介: SqlDependency是outputcache网页缓存的一个参数,它的作用是指定缓存失效的数据库依赖项,可以具体到数据库和表. SqlDependency能解决 ...
随机推荐
- css实现隐藏多余溢出文字并显示省略号
<meta charset="utf-8" /> <style> .txt{ width:200px; border:1px solid #ddd; ove ...
- PHP 变量的实现原理
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica } p.p2 { margin: 0.0px 0.0px 0.0px 0. ...
- centos7下安装vsftpd
安装步骤: 创建ftp目录 cd / mkdir ftpfile 创建指定登陆用户并不让他拥有登陆系统的权限(设置指定登陆shell) useradd ftpuser -d /ftpfile/ -s ...
- JPA数据懒加载LAZY和实时加载EAGER(二)
懒加载LAZY和实时加载EAGER的概念,在各种开发语言中都有广泛应用.其目的是实现关联数据的选择性加载,懒加载是在属性被引用时,才生成查询语句,抽取相关联数据.而实时加载则是执行完主查询后,不管是否 ...
- Docker安装weblogic
Docker容器安装weblogic详细教程 前提:已经安装后Docker,并且能正常使用 (1)获取镜像: docker pull ismaleiva90/weblogic12 docker pu ...
- Qt msvc Modules
3D ActiveQt container ActiveQt server Bluetooth Concurrent Core Enginio Declarative Gui Help Locatio ...
- (转载,但不知道谁原创)获取SPRING 代理对象的真实实例,可以反射私有方法,便于测试
/** * 获取 目标对象 * @param proxy 代理对象 * @return * @throws Exception */ public static Object getTarget(Ob ...
- 情景linux--如何摆脱深路径的频繁切换烦恼?
情景 通常情况下,在linux系统上切换目录的成本很低,使用cd命令就可以了.如果需要在一个目录的不同的子目录和其父目录之间切换,进入到这个目录之后,再使用相对路径会比较方便.如果要切换的目录的路径较 ...
- Android开发之Android Context Menu
1 Creatinga上下文菜单, Todefine上下文菜单的外观和行为,推翻youractivity的上下文菜单回滚方法,onCreateContextMenu()和onContextItemSe ...
- linux yum源配置及vim运用
redhat7默认没有yum模板,需要自己创建[root@localhost ~]# mount /dev/cdrom /root/iso/(挂载镜像)mount: /dev/sr0 写保护,将以只读 ...