使用oracle 的 PL/Sql 定时执行一个存储过程
标签: 存储oraclejobsuser测试delete 2011-02-25 16:17 9109人阅读 评论(4) 收藏 举报 分类:版权声明:本文为博主原创文章,未经博主允许不得转载。
/*
使用Oracle 的 PL/Sql 定时执行一个存储过程
测试目的:在表 tab 中间隔一分钟插入一条数据
实现方案:
1.通过 oracle 中 dbms_job 完成存储过程的定时调用
2.在存储过程中完成相应的逻辑操作
脚本说名:
以下代码为 dbms_job 操作的基本写法,
其中不包含各个系统函数参数说明,
如需要了解“系统函数参数说明”请另行在网上查找
注:
1.其中的停止运行后继续执行的方法还有待测试
2.开始运行一个计划时,计划内的存储过程将立刻执行一次
*/
--1.创建一个测试表
create table tab(dtime date);
Select * From tab;
--2.创建一个存储过程
create or replace procedure p_test as
begin
insert into tab values(sysdate);
end;
--3.创建一个执行计划:每天1440分钟,即一分钟运行存储过程一次
Declare
i Integer;
Begin
dbms_job.submit(i,'p_test;',Sysdate,'sysdate+1/1440');
end;
--4.查看已经创建的所有执行计划
Select * From user_jobs;
--5.运行执行计划
Declare
job_num Integer;
Begin
-- 查找计划号
Select t.JOB Into job_num From User_Jobs t ;
-- 运行制定的执行计划
dbms_job.run(job_num);
end;
--6.查看计划的运行结果
select
t.dtime
--to_char(t.dtime,'yyyy-mm-dd hh24:mi:ss')
from tab t
Order By t.dtime;
-- 查出测试表内容
Delete tab t;
--7.修改执行计划(修改执行的间隔时间)
/*
sysdate+1 表示每天执行一次
sysdate+1/24 表示每小时执行一次
sysdate+1/(24*60) 表示每分钟执行一次
sysdate+1/(24*60*60) 表示每秒执行一次
*/
Declare
job_num Integer;
Begin
-- 查找计划号
Select t.JOB Into job_num From User_Jobs t ;
-- 修改为:每天执行一次
dbms_job.interval(job_num, 'sysdate+1/(24*60)');
end;
--8.停止一个执行计划
/*
Sysdate+(5) 加五天,
Sysdate+(5/24) 加五时,
Sysdate+(5/24/60) 加五分,
Sysdate+(5/24/60/60) 加五秒
*/
Declare
job_num Integer;
Begin
-- 查找计划号
Select t.JOB Into job_num From User_Jobs t ;
-- 停止计划,不在执行
--dbms_job.broken(job_num,True);
-- 停止计划,并在两分钟后继续执行
dbms_job.broken(job_num,True,Sysdate+(2/24/60));
end;
--9.删除执行计划Declare
Declare
job_num Integer;
Begin
-- 查找计划号
Select t.JOB Into job_num From User_Jobs t ;
dbms_job.remove(job_num);
end;
- 顶
- 1
- 踩
- 0
我的同类文章
- •LiteDB v.2.0.0-rc 使用介绍2016-06-21
- •解决 用户'sa'登录失败。错误:18456 问题2012-03-14
- •EntityFramework 4.0 中添加对存储过程的调用2011-05-12
- •微软企业库5.0 支持 MySql2014-06-05
- •Vs2010 打包项目使用(打包)2011-05-24
参考知识库
- 猜你在找
- 顾荣:开源大数据存储系统Alluxio(原Tachyon)的原理分析与案例简介
- Ceph—分布式存储系统的另一个选择
- Android之数据存储
- Android核心技术——Android数据存储
- Android中的数据存储
- Oracle PLSQL 存储过程 入门之案例实践
- Oracle plsql编程 25--调用返回结果集的存储过程
- 置顶 Oracle PLSQL中编写空操作的存储过程
- PLSQL如何调试Oracle存储过程
- PLSQL如何调试Oracle存储过程
- 2楼 longsheng9TIAN 2012-04-02 10:50发表 [回复]
- 已知存儲過程,怎麼在介面上顯示?
- 1楼 Frankielove 2011-11-08 16:34发表 [回复]
- 嗯嗯。不错不错。