DBMS_JOB是什么?
DBMS_JOB是Oracle数据库提供的专家程序包的一个.
主要用来在后台运行程序,是数据库中一个极好的工具. 可用于自动调整调度例程任务,例如分析数据表,执行一些归档操作,清理草稿表等等.
使用语法说明.
使用DBMS_JOB主例程是SUBMIT例程, 对SUBMIT例程中的各变量含义说明:
JOB: 一个作业标识符,由系统来分配(OUT参数).
WHAT: 将要运行的SQL文本,必须是有效的PL/SQL语句或一段代码. 例如: 运行存储过程P,可以传递字符串P;(包括分号)给这个例程。无论在WHAT参数中提交什么,将被封装成如下PL/SQL块:
Declare
Job Binary_Integer := :Job;
Next_Date Date := :Mydate;
Broken Boolean := False;
Begin
What
:Mydate := Next_Date;
If Broken Then :B := 1;
Else :B := 0;
End If;
End;
NEXT_DATE: 日期函数字符串,用来计算作业下次运行的时间.
NO_PARSE: 确定WHAT参数在提交时是否进行有效性分析。
INSTANCE: 只得在松耦合聚簇的机器上,在并行服务器模式(一个Oracle可以运行的模式)下才有意义,这将指定在哪个实例上作业可以执行.
FORCE: 只有在并行服务器模式下才有意义. 如设置为True(默认值),可以使用任何实例数据库提交作业, 如设置为False, 相关实例不可用,提交请求将失败.
在DBMS_JOB程序包中也有其它入口点. SUBMIT是用来调度作业的一个,其他的允许操作已调度的作业,执行操作,如RUN,REMOVE和CHANGE操作.
示例
设原有存储过程为:pr_movedetail(业务存储过程), 执行大数据量操作, 操作耗时.
利用DBMS_Job包功能, 将存储过程的执行集中提交给Oracle Job来处理, 客户端无需等待.
1. 创建一张表,包含每个参数的字段,再加一个ID主码字段.
Create Table run_movedetail
(
ID number primary key,
Param1 varchar2(255),
Param1 varchar2(255),
RunDate Date
)
此表不仅作为将要提交的处理过程排队的地方,而且当提交时,也可作为已提交处理过程保存永久日志的地方.
2. 创建fast_movedetail存储过程(创建作业ID及把各参数Insert到run_movedetail).
create or replace procedure fast_movedetail(p_Param1 varchar2,p_Param2 varchar2)
As
L_job number;
Begin
dbms_job.submit(L_job,’background_movedetail(JOB);’);
Insert into run_movedetail(ID,Param1,Parma2) values (L_job, p_Param1, p_Param2);
End;
该例程将提交一项作业background_movedetail,并且将它传递给JOB参数.
3. 创建background_movedetail存储过程.
Create or replace procedure background_movedetail(p_job in number)
As
L_rec run_movedetail%rowtype;
Begin
Select * into L_rec from run_movedetail where id = p_job;
Pr_movedetail(L_rec.Param1,L_rec.Param2); //业务存储过程调用
Update run_movedetail set RunDate = sysdate where id = p_job;
//调用实际使用的Pr_movedetail例程, 然后更新记录,记录实际提交时间.
End;
最后在客户端直接调用fast_movedetail即可.

作者“阶梯”

Oracle 10g实现存储过程异步调用的更多相关文章

  1. Oracle数据库连接、存储过程及调用

    Oracle数据库连接.存储过程及调用 1. 定义一个存储过程 create or replace procedure getuser(eid in number, na out varchar, e ...

  2. oracle如何创建存储过程和调用

    oracle存储过程的创建语法 create or replace procedure 存储过程名称 ( --定义输入.输出参数-- 参数名1 in 参数类型, 参数名2 in 参数类型, 参数名3 ...

  3. Oracle存储过程中异步调用的实际操作步骤

    本文标签:Oracle存储过程 我们都知道在Oracle数据库的实际应用的过程中,我们经常把相关的业务处理逻辑,放在Oracle存储过程中,客户端以通过ADO来进行相关的调用  .而有些相关的业务逻辑 ...

  4. J2EE之oracle、mysql存储过程调用

    最近几天在研究hibernate.JPA对存储过程的调用,主要是针对有返回结果集的存储过程的调用方法,个人感觉存储过程是个好东西,虽然说heibernate对数据访问封装的比较不错,再加上他的缓存机制 ...

  5. oracle存储过程递归调用

    oracle存储过程递归调用,如果where子句使用的是传入的参数, 在以后的递归调用中参数就是第一次调用的参数值,解决办法是定义变量,使用自定义的变量问题可以解决.

  6. oracle中存储过程中调用存储过程

    存储过程中调用存储过程 create or replace package body PF_Role_Pack is procedure sp_GetPage_Role(pageSize_ in nu ...

  7. (转载)oracle 在一个存储过程中调用另一个返回游标的存储过程

    原文链接:http://www.jb51.net/article/20160.htm 实际项目当中经常需要在一个存储过程中调用另一个存储过程返回的游标,本文列举了两种情况讲述具体的操作方法. 第一种情 ...

  8. oracle创建函数和调用存储过程和调用函数的例子(区别)

    创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...

  9. Oracle 10G强大的SQL优化工具:SQL Tuning Advisor

    p { margin-bottom: 0.25cm; direction: ltr; color: rgb(0, 0, 0); line-height: 120%; orphans: 2; widow ...

随机推荐

  1. [ios][swift]Swift - 常用文件目录路径获取(Home目录,文档目录,缓存目录等)

    自己写的不一定是最好的! 轮子:http://www.hangge.com/blog/cache/detail_765.html

  2. MongoDB在windows自启动

    D:\mongodb\Server\3.0\bin>mongod --logpath D:\mongodb\log\mongo.log --logappend--dbpath D:\mongod ...

  3. [转]ios 开发file's owner以及outlet与连线的理解

    转载地址:http://www.cocoachina.com/bbs/simple/?t108822.html xib文件本身可以看做是一个xml,app启动的时候会根据xml构造xib对应的界面及其 ...

  4. HDU 4712:Hamming Distance

    Hamming Distance Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) ...

  5. {A} + {B} 分类: HDU 2015-07-11 18:06 6人阅读 评论(0) 收藏

    {A} + {B} Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  6. 分页sql

    /// <summary> /// 根据页数分页 /// </summary> /// <param name="page"></para ...

  7. Animation Play/Stop测试

    测试结果: 1.当切换不同动画播放,可以直接调用Play或者CrossFade.会立即切过去 2.当相同动画再次播放,又想打断重头再播,需要先调用Stop. anim.Play("Test1 ...

  8. Python相对路径转绝对路径,绝对路径转相对路径

    1.绝对路径转相对路径 print os.path.relpath("d:/MyProj/MyFile.txt") #..\MyProj\MyFile.txt 是根据当前路径的相对 ...

  9. HashMap原理详解

    HashMap 概述 HashMap 是基于哈希表的 Map 接口的非同步实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.此类不保证映射的顺序,特别是它不保证该顺序恒久不 ...

  10. bzoj 2818: Gcd GCD(a,b) = 素数

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1566  Solved: 691[Submit][Status] Descript ...