Oracle_PL/SQL(10) 定时器job
定时器job
1.定义
定时器指在特定的时间执行特定的操作。
可以多次执行。
说明:
特定的操作:指一个完成特定功能的存储过程。
多次执行:指可以每分钟、每小时、每天、每周、每月、每季度、每年等周期性的运行。
2.准备工作
源表:student,course,sc
create table student
(
sno number(6) not null primary key,
sname varchar2(20),
birth date
);
create table course
(
cno number(6) not null primary key,
cname varchar2(20),
teacher varchar2(20)
);
create table sc
(
sno number(6) not null,
cno number(6) not null,
grade number(6)
);
alter table sc add constraint pk_sc primary key (sno, cno);
--数据
insert into student (sno, sname, birth) values (1, 'sname1', to_date('06-05-1994', 'dd-mm-yyyy'));
insert into student (sno, sname, birth) values (2, 'sname2', to_date('13-11-1995', 'dd-mm-yyyy'));
insert into student (sno, sname, birth) values (3, 'sname3', to_date('02-08-1995', 'dd-mm-yyyy'));
insert into student (sno, sname, birth) values (4, 'sname4', to_date('18-10-1990', 'dd-mm-yyyy'));
insert into student (sno, sname, birth) values (5, 'sname5', to_date('11-10-1992', 'dd-mm-yyyy'));
insert into student (sno, sname, birth) values (6, 'sname6', to_date('06-09-1993', 'dd-mm-yyyy'));
insert into student (sno, sname, birth) values (7, 'sname7' , to_date('10-10-1994', 'dd-mm-yyyy'));
insert into student (sno, sname, birth) values (8, 'sname8', to_date('16-10-1992', 'dd-mm-yyyy'));
insert into course (cno, cname, teacher) values (1, '数学', '张三');
insert into course (cno, cname, teacher) values (2, '语文', '李四');
insert into course (cno, cname, teacher) values (3, '英语', '王五');
insert into sc (sno, cno, grade) values (1, 1, 80);
insert into sc (sno, cno, grade) values (1, 2, 75);
insert into sc (sno, cno, grade) values (2, 1, 69);
insert into sc (sno, cno, grade) values (2, 3, 85);
insert into sc (sno, cno, grade) values (3, 2, 98);
insert into sc (sno, cno, grade) values (3, 3, 73);
insert into sc (sno, cno, grade) values (4, 1, 55);
insert into sc (sno, cno, grade) values (4, 2, 76);
insert into sc (sno, cno, grade) values (4, 3, 80);
insert into sc (sno, cno, grade) values (5, 1, 58);
insert into sc (sno, cno, grade) values (5, 2, 79);
insert into sc (sno, cno, grade) values (5, 3, 65);
insert into sc (sno, cno, grade) values (6, 2, 78);
insert into sc (sno, cno, grade) values (6, 3, 86);
insert into sc (sno, cno, grade) values (7, 1, 68);
insert into sc (sno, cno, grade) values (8, 1, 90);
目标表:s_sc
create table s_sc
(
sname varchar2(20) not null primary key,
c_grade number(6),
m_grade number(6),
e_grade number(6)
);
--过程:proc_ssc_insert
create or replace procedure proc_ssc_insert
is
v_cnt number;
begin
for rs in (select sno,sname from student) loop
select count(1) into v_cnt from s_sc where sname=rs.sname;
if v_cnt=0 then
insert into s_sc (sname) values (rs.sname);
end if;
for rs2 in (select grade,cname from sc,course
where sc.cno=course.cno and sno=rs.sno) loop
if rs2.cname='语文' then
update s_sc set C_GRADE=rs2.grade where sname=rs.sname;
elsif rs2.cname='数学' then
update s_sc set M_GRADE=rs2.grade where sname=rs.sname;
elsif rs2.cname='英语' then
update s_sc set E_GRADE=rs2.grade where sname=rs.sname;
end if;
end loop;
end loop;
end;
/
show err;
检查数据:
select * from student
select * from course
select * from sc
select * from s_sc
3.创建job
variable jobid number;
begin
sys.dbms_job.submit(job => :jobid,
what => 'proc_ssc_insert;',
next_date => to_date('2018-05-14 10:45:00', 'yyyy-mm-dd hh24:mi:ss'),
interval => 'TRUNC(sysdate)+1+1/(24)');
commit;
end;
/
var jobid number;
begin
dbms_job.submit(:jobid,'proc_ssc_insert;',trunc(sysdate)+16/24,'trunc(sysdate)+1+16/24');
end;
/
show err;
4.执行间隔interval
指可以每分钟、每小时、每天、每周、每月、每季度、每年等周期性的运行。
4.1:每分钟执行
interval => trunc(sysdate,'mi') + 1/(24*60)
每5分钟执行
interval => trunc(sysdate,'mi') + 5/(24*60)
4.1:每小时执行
interval => trunc(sysdate,'hh24') + 1/(24)
4.2:每天定时执行
例如:每天的凌晨1点执行
interval => trunc(sysdate)+1+1/(24)
4.3:每周定时执行
例如:每周一凌晨1点执行
interval => trunc(next_day(sysdate,'星期一'))+1/24
4.4:每月定时执行
例如:每月1日凌晨1点执行
interval =>trunc(last_day(sysdate))+1+1/24
interval =>trunc(add_months(sysdate,1),'mm')+1/24
4.5:每季度定时执行
例如:每季度的第一天凌晨1点执行
interval => trunc(add_months(sysdate,3),'q') + 1/24
4.6:每年定时执行
例如:每年1月1日凌晨1点执行
interval =>add_months(trunc(sysdate,'yyyy'),12)+1/24
5.数据字典中job的相关视图
job信息
select * from user_jobs;
正在运行的job
select * from dba_jobs_running;
6.运行job
begin
dbms_job.run(:job);
end;
/
7.删除job
exec dbms_job.remove(:job);
commit;
举例:
exec dbms_job.remove(23);
commit;--不加commit是删不掉的
8.中止job
exec dbms_job.broken(:job,true);
9.修改job
dbms_job.change(:job,:what,:next_date,:interval);
dbms_job.what(:job,:what);
dbms_job.next_date(:job,:next_date);
dbms_job.instance(:job,:instance);
dbms_job.interval(:job,:interval);
dbms_job.broken(:job,:broken,:next_date);
10.job相关的功能。
SQL> desc dbms_job;
Element Type
------------------ ---------
ANY_INSTANCE CONSTANT
ISUBMIT PROCEDURE
SUBMIT PROCEDURE 创建job
REMOVE PROCEDURE 删除job
CHANGE PROCEDURE 修改job
WHAT PROCEDURE 修改调用的过程
NEXT_DATE PROCEDURE 修改下次运行时间
INSTANCE PROCEDURE
INTERVAL PROCEDURE 修改运行间隔
BROKEN PROCEDURE 中止job
RUN PROCEDURE 运行job
USER_EXPORT PROCEDURE
BACKGROUND_PROCESS FUNCTION
IS_JOBQ FUNCTION
Oracle_PL/SQL(10) 定时器job的更多相关文章
- Oracle_PL/SQL(7) 集合
pl/sql集合处理单行单列数据,可以使用标量变量:处理单行多列的数据,可以使用pl/sql记录(%rowtype,record):处理单列多行数据,可以使用pl/sql集合. pl/sql集合类型是 ...
- Oracle_PL/SQL(6) 触发器(序列、视图)
序列1.创建序列create sequence seq_alog start with 1 increment by 1 maxvalue 999999999999999999999999999 mi ...
- Oracle_PL/SQL(5) 包
包1.定义:包用于逻辑组合相关的PL/SQL类型,项和子程序,由包规范和包体组成 建立包规范:包规范是包与应用程序之间的接口,用于定义包的公用组件, 包括常量,变量,游标,过程,函数等 建立包体:用于 ...
- Oracle_PL/SQL(4) 过程和函数
create table s_sc ( SNAME VARCHAR2(20) primary key, c_grade NUMBER(6), m_grade NUMBER(6), e_grade NU ...
- Oracle_PL/SQL(3) 游标
引言:PLSQL数据类型标量数据类型:数字类.字符类.日期类.布尔类(boolean).复合数据类型:记录(%rowtype).表.数组引用类型:REF CURSORLOB类型:BLOB.CLOB 1 ...
- Oracle_PL/SQL(2) 过程控制
0.检索单行数据0.1使用标量变量接受数据例1: 7788declare v_ename emp.ename%type; v_sal emp.sal%type;begin select ename,s ...
- Oracle_PL/SQL(9) 例外处理
例外处理1.例外分类:预定义例外,非预定义例外,自定义例外三种传递例外:如果在例外处理部分exception没有捕捉例外,oracle会将例外传递到调用环境.捕捉并处理例外:使用例外处理部分完成exc ...
- Oracle_PL/SQL(8) 动态sql
动态sql0.pl/sql块的限制 不能执行ddl操作(create.drop.alter): 不能执行部分dcl操作(grant.revoke). 1.语法动态sql:在执行时才能确定要执行的sql ...
- Oracle_PL/SQL(1) 匿名块
1. PL/SQL 简介PL/SQL是一种比较复杂的程序设计语言, 用于从各种环境中访问Oracle数据库.为什么使用PL/SQL?Orade是一种关系型数据库, 用来访问关系型数据库的语言是 “结构 ...
随机推荐
- curl命令解析
curl命令可以实现http post或者get的请求,是linux下的命令行工具 1.1.直接请求url,打印标准输出 1.2.使用-o参数,可以标准输出到指定的位置 [root@VM-3-10-1 ...
- 通过AI自学习,Google让Pixel 3的人像模式更优秀
通过AI自学习,Google让Pixel 3的人像模式更优秀 Link: https://news.cnblogs.com/n/613720/ 虽然双摄手机已经在市场上普及,其所带来的人像模式.多倍变 ...
- C++ 与 CDC相关的知识,点滴总结
hdc = GetDC (hwnd) ; GetDc函数:用于获得hWnd参数所指定窗口的客户区域的一个设备环境. 所获得的设备环境可以是通用.类或者私有类型,具体由指定窗口的类风格决定.对于通用设备 ...
- redmine安装-BitNami 提供的一键安装程序
redmine安装-BitNami 提供的一键安装程序 博客分类: REDMINE redmine安装redmine一键安装bitNami redmine BitNami 提供re ...
- C# 使用post的方式提交raw格式的数据,数据为json格式,多层嵌套
原文地址:https://cnodejs.org/topic/539ff8a5c3ee0b5820938d60 raw方式使用的是纯字符串的数据上传方式,所以在POST之前,可能需要手工的把一些JSO ...
- ASP.NET 分页+组合查询 练习
分页和组合查询都是通过拼接SQL语句到数据库查询进行实现 到汽车表(car)中查询 ,汽车表选取了“编号 code”,“车名 name”,“日期 time”,“油耗 oil ”,“马力 powers” ...
- 05_ssm基础(四)之Spring基础二
24.spring配置dbcp并完成CRUD操作 1.准备jar包 2.编辑Product模型 package com.day02.ssm.spring.model; public class Pro ...
- 创建java项目思路
一.搭建 1.创建搭建项目 2.创建分层 二.理解项目(理清总体思路) 1.是否有共同部分(过滤或者拦截) 常用量 (static) 2.搭建单表基本增(是否需要返回值) 删(条件) 查(条 ...
- js中的arguments对象
在Javascript中没有函数重载,而arguments对象弥补了这点不足. js函数的参数是一个数组,在参数个数不固定的情况下,只需要给方法传递不同元素个数的数组即可.即使声明函数时没有形式参数, ...
- 大数据入门到精通5--spark 的 RDD 的 reduce方法使用
培训系列5--spark 的 RDD 的 reduce方法使用 1.spark-shell环境下准备数据 val collegesRdd= sc.textFile("/user/hdfs/C ...