/*
使用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;
例子:
create or replace procedure jobquery as
begin
for cr in (select * from jccb.e_mp_cur_curve) loop
dbms_output.put_line(cr.ID);
end loop;
end ;
Declare job_excute Integer;
Begin
dbms_job.submit(job_excute,'jccb.jobquery;',Sysdate,'sysdate+1/144');
end;
Select * From user_jobs;
Declare
job_num Integer;
Begin
-- 查找计划号
Select t.JOB Into job_num From User_Jobs t ;
-- 运行制定的执行计划
dbms_job.run(job_num);
end;
使用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;
例子:
create or replace procedure jobquery as
begin
for cr in (select * from jccb.e_mp_cur_curve) loop
dbms_output.put_line(cr.ID);
end loop;
end ;
Declare job_excute Integer;
Begin
dbms_job.submit(job_excute,'jccb.jobquery;',Sysdate,'sysdate+1/144');
end;
Select * From user_jobs;
Declare
job_num Integer;
Begin
-- 查找计划号
Select t.JOB Into job_num From User_Jobs t ;
-- 运行制定的执行计划
dbms_job.run(job_num);
end;
发表评论
-
oracle去除重复数据常用的方法
2023-12-07 11:11 89SELECT * from ecm_query t whe ... -
mysql得到表名和字段
2018-05-03 10:21 0引用 SELECT table_name FROM INFOR ... -
mysql级联查询
2017-11-30 16:48 1103实现效果 例如: 中国 下的 省 市 县 乡 输入 省的 ... -
oracle恢复删除的数据
2017-09-07 11:16 405分为两种方法:scn和时间戳两种方法恢复。 一、通过scn恢复 ... -
oracle 简单存储 一个表的数据转入另外的表
2017-06-06 19:58 467线损统计导入 select * from xs_gz ... -
Oracle 关联两表写update语句
2017-05-25 09:28 918两种方法: -- 方法1. UPDATE 表2 SE ... -
oracle 触发器实例
2017-03-29 17:09 504//新增字段更改值 create or replace tri ... -
删除oracle末用户的表数据
2015-03-10 16:01 563begin for cr in (select o.obje ... -
一个字符串是否包含另一个字符串(两个字符串内部已逗号隔开)
2014-08-07 11:39 862CREATE FUNCTION [dbo].[getStrCo ... -
Sql Server判断是否含有汉字、数字、字母
2014-06-26 09:45 2280/*含有字母或数字*/ select * from Ta ... -
sql 获取字符串长度SQL字符串操作汇总
2014-05-06 21:24 1126将字符串中从某个字符开始截取一段字符,然后将另外一个字符串插入 ... -
sqlserver锁表
2014-03-31 10:58 703select request_session_id s ... -
sql实现15位身份证转化为18位身份证
2014-02-19 14:22 1414create function f_CID15to18 ... -
如何利用SQL查询语句从SQLSERVER数据库中导入导出EXCEL表格
2013-10-21 16:26 2113如何利用SQL查询语句从SQLSERVER数据库中导入导出E ... -
如何将sqlserver表中的数据导出sql语句或生成insert into语句
2013-10-21 15:17 1206输入表名,生成插入语句 if exists (select ... -
使用sql语句将一个表中的数据拷贝到另一个表中
2013-08-12 13:59 945声名:a,b ,都是表 --b表存在(两表结构一样)inser ... -
SQLSERVER游标的使用
2013-02-19 15:41 993declare @user_name varchar( ... -
Tomcat 内存分配
2011-03-25 17:25 741023233232 -
oracle数据备份和还原
2011-01-21 11:19 800imp jwag/jwag@ORA10 file=d:jw ... -
Oracle存储过程
2011-01-14 13:39 650declare cursor c1 is select * ...
相关推荐
《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...
Oracle PL/SQL实例精解 student模式 数据库建立代码 包括数据库的建立、索引等。样本数据的插入。
Oracle公司已经将PL/SQL整合到Oracle 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本教程将以循速渐进的方式讲述PL/SQL基础语法,结构和组件、以及如何设计并执行一个PL/SQL程序,...
Oracle PL/SQL实例编程 Oracle PL/SQL实例编程 Oracle PL/SQL实例编程
Topics covered: How to use Oracle PL/SQL in all its manifestations through Oracle9i. Fundamentals of program structure (loops, cases, exceptions, etc.) and execution get attention, as do data types, ...
oracle PL/SQL pdf学习资料oracle PL/SQL pdf学习资料oracle PL/SQL pdf学习资料oracle PL/SQL pdf学习资料oracle PL/SQL pdf学习资料
oracle pl/sql实例精讲student数据库模式
Considered the best Oracle PL/SQL programming guide by the Oracle community, this definitive guide is precisely what you need to make the most of Oracle’s powerful procedural language. The sixth ...
NULL 博文链接:https://elf8848.iteye.com/blog/740881
Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发
ORACLE PL/SQL编程之八ORACLE PL/SQL编程之八ORACLE PL/SQL编程之八ORACLE PL/SQL编程之八
Oracle PL/SQL学习官方教材,英文版,覆盖了PL/SQL的所有知识,适合入门者或作为参考资料.
oracle pl/sql从入门到精通 配套源代码
《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...
《oracle pl/sql程序设计(第5版)》基于oracle数据库11g,从pl/sql编程、pl/sql程序结构、pl/sql程序数据、pl/sql中的sql、pl/sql应用构建、高级pl/sql主题6个方面详细系统地讨论了pl/sql以及如何有效地使用它。...
《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...
oracle pl/sql 存储过程和函数与触发器
oracle10g pl/sql完备教程,供初学者学习与开发者参考
oracle 9i pl/sql程序设计笔记。
《Oracle PL/SQL程序设计(第5版)》基于 Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、 PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...