当前位置:   article > 正文

PL/SQL存储过程,定时任务的使用教程_plsql定时执行存储过程

plsql定时执行存储过程

PL/SQL存储过程,定时任务的使用教程

本章参考bilibili_oracle学习,如有侵权请联系我

-步骤:

  1. 建表
  2. 创建自增seq序列
  3. 创建一个简单的插入数据存储
  4. 创建dbms_job.submit()定时任务
  5. 定时任务移除

第一步:建表(简单的测试表就好)

--1.table,测试表
create table person_20201011(
       id number primary key,
       name varchar2(10) not null
);
  • 1
  • 2
  • 3
  • 4
  • 5

第二步:序列

--2.sequence
create sequence seq_pid;

  • 1
  • 2
  • 3

第三步:创建简单的数据插入过程procrdure

--3.procedure
create or replace procedure xperson is
begin
  insert into person_20201011
  values
    (seq_pid.nextval, 'admin' || seq_pid.currval);
    --表有两个字段,其中插入的第一个字段根据主键id序列自增,每次使用序列+1,第二个字段的值为admin连接上序列的当前值
    commit;
    --记得提交事务(插入更新等操作)
end;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

第四步: 创建dbms_job.submit()定时任务

首先要了解一下dbms_job.submit(),以及它的参数和类型,是怎么使用的

–submit 有四个参数,
参数一:job(out模式的binary_integer类型),是用来提交定时任务时接受任务编号的(创建时候系统分配的)
参数二:varchar2,要调用的存储过程的名称;例如**‘过程名字();’**
参数三:date,第一次执行任务的时间
参数四:interval(varchar2),任务执行的时间间隔
参数四是一个字符串,但是字符串必须是date类型;例如’sysdate+1’表示隔一天运行一次
间隔时间的计算方式,参数四-参数三;

--4.dbms_job 定时任务创建     定时插入数据  (定义并提交定时任务)
declare
  jid binary_integer;	--声明一下系统分配的编号,这个数据类型要注意,详情请看上面的参数说明
begin
  dbms_job.submit(jid,'xperson();',sysdate,'sysdate+10/(24*60*60)');
  --第一个参数是系统分配的编号,
  --注意参数二是存储过程的调用,后面要有括号和分号,它是一个字符串类型的
  --参数三,就是开始的时间了,我这里使用了当前系统时间
  --还有就是第四个参数时间的计算也是字符串类型的,我这里使用了每隔10秒跑一次定时
  dbms_output.put_line('系统分配的编号:' || jid); --输出一下这个系统分配的编号,方便等会移除定时job等
  dbms_job.run(jid);	--运行定时任务
end;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这边也可以看到这个定时任务的系统分配额编号
定时任务的编号查看

定时任务的编号查看
这边也可以看到编号
定时任务的编号查看
接下来我们看一下效果

select * from person_20201011;
  • 1

插入效果

第五步:定时任务移除

--删除dbms_job定时任务,其中remove括号中的数据是系统分配给定时任务的编号,具体查看看第四步的操作
begin
  dbms_job.remove(32);
end;
  • 1
  • 2
  • 3
  • 4

这时我们的定时任务就移除了

就到这里了

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号