承接上文,本片具体讨论一下plan_jobs,在数据库中常常需要用到很多的计划任务,
主要是实现数据的定时处理。比如在本次开发中,我们有一个酒店取消预订的计划任务需要实施,存储过程如下
----取消房间预订
PROCEDURE CANCELPREBOOK
AS
cursor cur_prebook is
select t.prebookid,t.roomid
from prebook t
where t.valid=0
and t.roomid =-1
and t.scheduledate<sysdate;
CURSOR CUR_HASPREBOOK IS
select t.prebookid,t.roomid
from prebook t
where t.valid=0
AND T.ROOMID<>-1
and t.scheduledate<sysdate;
v_id number;
v_roomid number;
V_STATUS NUMBER;
BEGIN
open cur_prebook;
loop
fetch cur_prebook into v_id,v_roomid;
exit when cur_prebook%notfound;
----取消预订表
update prebook t
set t.valid=1
where t.valid=0
and t.prebookid=v_id;
----取消预订房间
update rooms rm
set rm.status=1
where rm.roomid=v_roomid;
end loop;
close cur_prebook;
----CANCEL HASN'T IN
OPEN CUR_HASPREBOOK;
loop
fetch CUR_HASPREBOOK into v_id,v_roomid;
exit when CUR_HASPREBOOK%notfound;
SELECT T.STATUS INTO V_STATUS
FROM ROOMS T WHERE T.ROOMID=V_ROOMID;
IF V_STATUS=2 THEN
----CANCEL ROOM
UPDATE ROOMS RS SET RS.STATUS=1
WHERE RS.ROOMID=v_roomid;
---CANCEL PREBOOK RECORD
UPDATE PREBOOK BK SET BK.VALID=1
WHERE BK.PREBOOKID= v_id;
END IF;
END LOOP;
CLOSE CUR_HASPREBOOK;
END CANCELPREBOOK;
具体的方法是:
1,打开pl/sql的command window。
2,定义一个number变量叫jobno。
sql>variable jobno number;
3,提交任务。
SQL> begin
2 dbms_job.submit(--pro C的语法
:jobno,----任务计划系统编号
'ems_planjob_pkg.CANCELPREBOOK;',----调用计划包中的目标过程
sysdate+(45/1440),----首次执行时间
'sysdate+1'-----间隔执行时间
);
3 end;
4 /-----激活
成功后提示如下
PL/SQL procedure successfully completed
用户可以查询出当前的任务计划,确认是否正确,语句如下
select * from user_jobs;
分享到:
相关推荐
通过Oracle实例来讲述如何设计Oracle数据库,大家可以下载作为学习Oracle的一个参考吧
如果编程人员要在一个表中查找许多行,结果中的每个行都会查找其他表中的数据,最后,编程人员创建了独立的UPDATE命令来成批地更新第一个表中的数 据。...本文将为大家介绍通过JDBC连接Oracle数据库的十大技巧。
主要讲解怎样给Oracle创建定时任务,例如每一分钟把一张表的数据更新到另一表中。
按照如下顺序传授知识与训练技能:体验数据库的应用→认识Oracle的工作环境、体验Oracle 10g环境中常用工具操作→数据库的创建与管理→数据表的创建与管理→管理视图→SQL编程语言→PL/SQL编程语言→管理PLSQL存储...
体验数据库的应用→认识 Oracle的工作环境、体验Oracle 10g环境中常用工具操作→数据库的创建与管理→数据表的创建与管理→管理视图→SQL编程语言→PL/SQL编程语言→管理PLSQL存储过程与触发器 →管理安全性→数据库...
Oracle数据库对应唯一的一个实例名SID,Oracle数据库服务器启动后,一般至少有以下几个用户:Internal,它不是一个真实的用户名,而是具有SYSDBA优先级的Sys用户的别名,它由DBA用户使用来完成数据库的管理任务,...
Oracle数据库对应唯一的一个实例名SID,Oracle数据库服务器启动后,一般至少有以下几个用户:Internal,它不是一个真实的用户名,而是具有SYSDBA优先级的Sys用户的别名,它由DBA用户使用来完成数据库的管理任务,...
Oracle 数据库管理员的任务 2-3 用于管理 Oracle 数据库的工具 2-4 安装:系统要求 2-6 检查系统要求 2-7 灵活体系结构 (OFA) 2-8 使用灵活体系结构 2-9 设置环境变量 2-11 Oracle Universal Installer (OUI)...
Oracle 数据库管理员的任务2-3 用于管理Oracle 数据库的工具2-4 安装:系统要求2-6 检查系统要求2-7 灵活体系结构(OFA) 2-8 使用灵活体系结构2-9 设置环境变量2-11 Oracle Universal Installer (OUI) 2-13 安装...
oracle10g创建、启用、执行、停用、删除、查询job实例
可执行超多常用的Oracle数据库操作,包含了基础数据库连接、关闭连接、输出记录集、执行Sql语句,返回带分页功能的dataset 、取表里字段的类型和长度等,同时还有哈稀表自动插入数据库等高级任务。需要特别指出的是...
学些ORACLE的时候老是创建定时任务失败,这里提供一个实例
数据库实例就是一组oracle的后台进程/线程和共享内存区域的组合 Oracle 例程:Oracle 例程是后台进程和内存结构的组合。只有启动例程后,才能访问数据库中的数据。每次启动例程时,会分配系统全局区 (SGA) 并启动 ...
3) 配置节点互信(所有节点的基于用户oracle,grid的互信) 12 4) 创建组和用户,加权限 13 5) 用户环境变量配置 13 6) 创建目录,给予目录权限 14 7) 配置系统文件 14 a) 配置oracle、grid用户的shell限制 14 b) ...
§7.2 关于创建多个Oracle实例问题 93 §7.3 Oracle系统安装后的优化基础工作 94 §7.3.1 Oracle系统有关目录所有文件的保护 94 §7.3.2 避免新用户使用默认system系统表空间 94 §7.4 Oracle系统所在服务器的独立性...
实例207 连接Oracle数据库 8.2 添加数据 实例208 利用INSERT语句批量插入数据 实例209 利用SELECT INTO生成临时表 8.3 更新数据 实例210 批量修改数据 实例211 将指定字段数据为空的记录添上数据 8.4 删除...
8.5 设置ASM实例 222 8.6 创建ASM磁盘组 227 8.7 使用ASMCMD和ASMLIB 228 8.8 把已有数据库转换为ASM 229 8.9 Data Guard简介 231 8.10 Data Guard保护模式 232 8.11 创建物理备用服务器 234 8.12 综述 236 ...
5.2.8 关于备用激活要记住的三个要点 5.2.9 备用激活后的四项工作 5.2.10 将归档重做日志自动传送到备用 数据库 5.2.11 启动管理恢复 5.2.12 只读打开备用数据库 5.2.13 热备用数据库的维护 5.3 回顾 第6章 ...