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. 雪花算法(SnowFlake)

    引言 唯一ID可以标识数据的唯一性,在分布式系统中生成唯一ID的方案有很多,常见的方式大概有以下三种: 依赖数据库,使用如MySQL自增列或Oracle序列等. UUID随机数 snowflake雪花 ...

  2. 在线SQL格式化工具推荐

    在线SQL格式化工具,一键美化.整理您的SQL代码,支持多种数据库语法格式化.有效提升代码可读性,方便团队协作与快速定位问题,是开发人员必备的SQL编程助手,让复杂查询更清晰,更易于维护. 在线SQL ...

  3. Java freemarker生成word模板文件(如合同文件)及转pdf文件方法

    Java freemarker生成word模板文件(如合同文件)及转pdf文件方法创建模板文件ContractTemplate.docx ContractTemplate.xml 导入的Jar包 co ...

  4. GUI测试还能这么玩(Page Code Gen + Data Gen + Headless)

    标签(空格分隔): GUI测试还能这么玩(Page Code Gen + Data Gen + Headless) 页面对象自动生成 在前面的文章中,我已经介绍过页面对象(Page Object)模型 ...

  5. Docker 总体架构图解

    Docker 的总体架构 Docker 是一个 C/S 模式的架构,后端是一个松耦合架构,模块各司其职. 下图是它的总体架构图: 1. 用户使用 Docker Client 与 Docker Daem ...

  6. DeepViT:字节提出深层ViT的训练策略 | 2021 arxiv

    作者发现深层ViT出现的注意力崩溃问题,提出了新颖的Re-attention机制来解决,计算量和内存开销都很少,在增加ViT深度时能够保持性能不断提高 来源:晓飞的算法工程笔记 公众号 论文: Dee ...

  7. 「Pygors跨平台GUI」1:Pygors跨平台GUI应用研究

    「Pygors系列」一句话导读: Python.Go.Rust.C程序跨平台GUI框架研究. 一.问题 Pygors是什么? Pygors是我自己创造的一个词,就是Python.Go.Rust.C四种 ...

  8. Vue2 移动端 ui库 MintUI

    MintUI MintUI是饿了么团队开发的基于移动端的vue组件库.用于搭建移动端界面. http://mint-ui.github.io/docs/#/zh-cn2

  9. AT_agc022_a 题解

    洛谷链接&Atcoder 链接 本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读. 题目简述 给定字符串 \(S\) , 仅包含互不相同的小写字母, 你需要找到仅包含互不相同的小写 ...

  10. 第八节 JMeter基础-高级登录【数据库数据驱动】

    声明:本文所记录的仅本次操作学习到的知识点,其中商城IP错误,请自行更改. 背景:获取数据库用户表中的数据进行登录接口测试.思路: 引用jar包[测试计划]. 设置数据库的连接信息,取变量名db1-- ...