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. 性能分析: 快速定位SQL问题

    在数据库性能调优的实践中,SQL性能分析是至关重要的一环.一个执行效率低下的SQL语句可能会导致整个系统的性能瓶颈. 为了快速定位并解决这些问题,我们需要对SQL进行性能分析.本文将介绍一些常用的方法 ...

  2. es6.6.1 java客户端 client基础操作

    1.引入jar包 <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId&g ...

  3. idea部署运行tomcat项目方法

    在导航栏点击Add Configuration-或者(打开菜单Run->Edit Configuration) 点击+号,选择Tomcat Server ->选择Local->在Na ...

  4. 通俗理解GAN -- 基础认知

    Smiling & Weeping ---- 你已春风摇曳,我仍一身旧雪 1.GAN的基本思想 GAN全称对抗生成网络,顾名思义是生成模型的一种,而他的训练则是一种对抗博弈状态中的.下面我们举 ...

  5. 关于编译告警 C4819 的完整解决方案 - The file contains a character that cannot be represented in the current code page (number). Save the file in Unicode format to prevent data loss.

    引言 今天迁移开发环境的时候遇到一个问题,同样的操作系统和 Visual Studio 版本,原始开发环境一切正常,但是迁移后 VS 出现了 C4819 告警,上网查了中文的一些博客,大部分涵盖几种解 ...

  6. Nuxt3页面开发实战探索

    title: Nuxt3页面开发实战探索 date: 2024/6/19 updated: 2024/6/19 author: cmdragon excerpt: 摘要:这篇文章是关于Nuxt3页面开 ...

  7. 3D捕鱼大富翁源码分析

    ​ 今天接受了一个捕鱼的源码,技术栈采用: 客户端:Unity 服务端:Java 数据库:mysql 缓存:redis 先来几张成品图 ​编辑​编辑 ​编辑​编辑 ​编辑 在代码中看到有腾讯推广渠道, ...

  8. 含税168元起!四核A53+NPU+PCIe+USB3.0,瑞芯微RK3562性价比真高!

     

  9. [golang]在Gin框架中使用JWT鉴权

    什么是JWT JWT,全称 JSON Web Token,是一种开放标准(RFC 7519),用于安全地在双方之间传递信息.尤其适用于身份验证和授权场景.JWT 的设计允许信息在各方之间安全地. co ...

  10. Java在创建同名目录/同名文件时名称拼接(数字)

    /** * 创建同名文件名称拼接(数字) * * @param path 需要创建的目录 * @return */ public static String recursionMkdirsFile(S ...