1.背景

在实际开发中,我们可能会利用存储过程批量处理业务,

对应有些存储过程可能会执行很长时间,这时我们需要客户端点操作后,存储过程异步执行

具体实现如下

1.创建处理业务的存储过程:sp_test_handle

2.创建触发业务的job:TEST_HANDLE_JOBS

3.创建客户端调用的存储过程:sp_test_handle_run

4.客户端调用存储过程sp_test_handle_run即可实现对sp_test_handle的异步调用;

2.实现步骤

1.创建处理业务的存储过程:sp_test_handle

create or replace procedure sp_test_handle(v_task_id number --任务编号
) as
-----------------------------------------------------------------------
-- 功能: 存储过程异步处理测试
-- 创建: lidongping 2020-9-30
----------------------------------------------------------------------- begin -- 参数检查
if (v_task_id is null) then
dbms_output.put_line('v_task_id 为空');
return;
end if; -- 处理业务
dbms_output.put_line('处理复杂的业务:' || v_task_id); exception
when others then
rollback;
dbms_output.put_line('处理异常:' || v_task_id);
end;

2.创建触发业务的job:TEST_HANDLE_JOBS

3.创建客户端调用的存储过程:sp_test_handle_run

create or replace procedure sp_test_handle_run(v_task_id number, -- 批次号
v_out_code out number, -- 错误码
v_out_msg out varchar2) -- 错误消息
as
-----------------------------------------------------------------------
-- 功能: 执行任务
-----------------------------------------------------------------------
l_job_name varchar2(128) := 'TEST_HANDLE_JOBS'; begin -- 设置存储过程参数
dbms_scheduler.set_job_argument_value(job_name => l_job_name,
argument_position => 1,
argument_value => v_task_id); -- 启动job
dbms_scheduler.enable(l_job_name);
v_out_code := error_code.success;
v_out_msg := '操作成功'; exception
when others then
rollback;
v_out_code := error_code.failed;
v_out_msg := '过程异常:' || sqlerrm;
end;

4.客户端调用存储过程sp_test_handle_run即可实现对sp_test_handle的异步调用;

完美!

oracle利用job实现存储过程异步执行的更多相关文章

  1. Oracle 在函数或存储过程中执行sql查询字符串并将结果值赋值给变量

    请看黄色部分 --区县指标 THEN TVALUE_SQL := 'SELECT TO_CHAR(' || CUR_ROW.MAIN_FIELD || ') FROM ' || CUR_ROW.END ...

  2. oracle 之 cursor:创建存储过程批量执行DDL语句

    说明:使用此过程可任意执行批量DDL语句,调用DDL查询语句时,注意转义字符,使用 ' 转义! 需求:批量删除以CUR_TEST开头的表,且有日志记录. 环境准备:建几张以CUR_TEST开头测试表. ...

  3. Oracle 在函数或存储过程中执行一条插入语句并返回主键ID值

    有时,我们需要往一张表插入一条记录,同时返回主键ID值. 假定主键ID的值都是通过对应表的SEQUENCE来获得,然后进行ID赋值 这里有几种情况需要注意: 1)如果建表语句含有主键ID的触发器,通过 ...

  4. Oracle 10g实现存储过程异步调用

    DBMS_JOB是什么?DBMS_JOB是Oracle数据库提供的专家程序包的一个.主要用来在后台运行程序,是数据库中一个极好的工具. 可用于自动调整调度例程任务,例如分析数据表,执行一些归档操作,清 ...

  5. 在存储过程中执行3种oracle循环语句

    create or replace procedure pr_zhaozhenlong_loop /* 名称:在存储过程中执行3种循环语句 功能:利用循环给表中插入数据 调用: begin -- Ca ...

  6. Oracle创建存储过程、执行存储过程基本语法

    >>>>>>>>>>>>>>>>>>>>>>>>> ...

  7. Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?

    Oracle中如何导出存储过程.函数.包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句? QQ群里有人问:如何导出一个用户下的存储过程?   麦苗答:方法有多种,可以使用DBMS_MET ...

  8. oracle中带参存储过程的使用

    Oracle中存储过程带参分为:输入参数(in)和输出参数(out) 例如: create or replace procedure out_test(v_user in emp.user_name% ...

  9. [.NET] 利用 async & await 的异步编程

    利用 async & await 的异步编程 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/5922573.html  目录 异步编程的简介 异 ...

  10. [.NET] 利用 async & await 进行异步 IO 操作

    利用 async & await 进行异步 IO 操作 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6082673.html  序 上次,博主 ...

随机推荐

  1. Css var 的基础使用

    Css var 语法 var(custom-property-name, value) - custom-property-name 必须 变量必须以 --开头 后面可以是英文.数字连接符,区分大小写 ...

  2. doris wget 地址

    wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-2.0.0-alpha1-bin-x86_64. ...

  3. 在Xcode编写我们的quick help

    程序环境 Xcode 13.2.1 "写代码要经常写注释."虽然很多人不以为然,但是在使用Xcode的时候,我们在写注释的时候稍微注意一下格式的话,Xcode会给我们带来额外的正反 ...

  4. Freertos学习:04-任务的调试函数

    --- title: rtos-freertos-04-任务的调试函数 EntryName: rtos-freertos-04-task-debug date: 2020-06-22 08:49:06 ...

  5. Python_10 debug、类和对象

    一.查缺补漏 APP测试流程梳理https://www.cnblogs.com/dengqing9393/p/6497068.html 有关类的知识点http://testingpai.com/art ...

  6. 3562-Qt工程编译说明、GPU核心使用说明

  7. mysql判断两个字符串(以逗号分隔)是否存在交集

    转载:https://blog.csdn.net/username666/article/details/107815331?utm_medium=distribute.pc_relevant.non ...

  8. Java获取客户端请求信息

    客户端工具类 /** * 客户端工具类 * * @author hviger */ public class ServletUtils { /** * 获取String参数 */ public sta ...

  9. null 和 undefined 的区别?

    null 表示一个对象被定义了,值为"空值":undefined 表示不存在这个值.(1)变量被声明了,但没有赋值时,就等于undefined. (2) 调用函数时,应该提供的参数 ...

  10. 推荐几款个人喜欢的IDEA开发工具主题【更舒适的开发】

    IDEA,全称 IntelliJ IDEA ,是Java语言的集成开发环境,IDEA在业界被公认为是最好的 java 开发工具之一,尤其在智能 代码助手.代码自动提示.重构.J2EE支持. Ant . ...