oracle利用job实现存储过程异步执行
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实现存储过程异步执行的更多相关文章
- Oracle 在函数或存储过程中执行sql查询字符串并将结果值赋值给变量
请看黄色部分 --区县指标 THEN TVALUE_SQL := 'SELECT TO_CHAR(' || CUR_ROW.MAIN_FIELD || ') FROM ' || CUR_ROW.END ...
- oracle 之 cursor:创建存储过程批量执行DDL语句
说明:使用此过程可任意执行批量DDL语句,调用DDL查询语句时,注意转义字符,使用 ' 转义! 需求:批量删除以CUR_TEST开头的表,且有日志记录. 环境准备:建几张以CUR_TEST开头测试表. ...
- Oracle 在函数或存储过程中执行一条插入语句并返回主键ID值
有时,我们需要往一张表插入一条记录,同时返回主键ID值. 假定主键ID的值都是通过对应表的SEQUENCE来获得,然后进行ID赋值 这里有几种情况需要注意: 1)如果建表语句含有主键ID的触发器,通过 ...
- Oracle 10g实现存储过程异步调用
DBMS_JOB是什么?DBMS_JOB是Oracle数据库提供的专家程序包的一个.主要用来在后台运行程序,是数据库中一个极好的工具. 可用于自动调整调度例程任务,例如分析数据表,执行一些归档操作,清 ...
- 在存储过程中执行3种oracle循环语句
create or replace procedure pr_zhaozhenlong_loop /* 名称:在存储过程中执行3种循环语句 功能:利用循环给表中插入数据 调用: begin -- Ca ...
- Oracle创建存储过程、执行存储过程基本语法
>>>>>>>>>>>>>>>>>>>>>>>>> ...
- Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?
Oracle中如何导出存储过程.函数.包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句? QQ群里有人问:如何导出一个用户下的存储过程? 麦苗答:方法有多种,可以使用DBMS_MET ...
- oracle中带参存储过程的使用
Oracle中存储过程带参分为:输入参数(in)和输出参数(out) 例如: create or replace procedure out_test(v_user in emp.user_name% ...
- [.NET] 利用 async & await 的异步编程
利用 async & await 的异步编程 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/5922573.html 目录 异步编程的简介 异 ...
- [.NET] 利用 async & await 进行异步 IO 操作
利用 async & await 进行异步 IO 操作 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6082673.html 序 上次,博主 ...
随机推荐
- 雪花算法(SnowFlake)
引言 唯一ID可以标识数据的唯一性,在分布式系统中生成唯一ID的方案有很多,常见的方式大概有以下三种: 依赖数据库,使用如MySQL自增列或Oracle序列等. UUID随机数 snowflake雪花 ...
- CS后门源码特征分析与IDS入侵检测
CS后门源码特征分析与IDS入侵检测考核作业 上线x64 getshell 抓心跳包,对特征字符解密Uqd3 用java的checksum8算法得到93,说明是x64的木马 public class ...
- Java动态获取实现类 Class.forName(clazz).newInstance()和applicationContext.getBean, bean Map寻找方式,Java Map定义和初始化方法
Java动态获取实现类 Class.forName(clazz).newInstance()和applicationContext.getBean, bean Map寻找方式,Java Map定义和初 ...
- 无法启动 IIS Express Web 服务器.....另一个程序正在使用此文件,进程无法访问。 问题解决
一般是由于端口被占用导致的,但是这个端口你在命令行netstat -a里 排除 如果发现被占用,那么就kill进程就可以了 如果没有发现被占用,依然无法启动,可以尝试以下方法 解决方案1: 修改iis ...
- AWX+gitlab
目录 AWX+gitlab 1. Awx配置 1.1 添加机构 1.2 添加团队 1.3 添加主机 1.4 测试主机连通性 2. 对接gitlab 2.1 添加凭证 2.2 添加项目 2.3 上传pl ...
- shell 编程简记
1. 环境变量 环境变量是指操作系统中记录一些配置信息的变量,这些变量在不同的程序之间共享,可以被操作系统或者 shell 脚本读取和修改. 环境变量也可以类比为各个语言中的全局变量,其作用域是全局的 ...
- Jetpack Compose(7)——触摸反馈
目录 一.点按手势 1.1 Modifier.clickable 1.2 Modifier.combinedClickable 二.滚动手势 2.1 滚动修饰符 Modifier.verticalSc ...
- Linux 内核:设备驱动模型(5)平台设备驱动
Linux 内核:设备驱动模型(5)平台设备驱动 背景 我们已经大概熟悉了Linux Device Driver Model:知道了流程大概是怎么样的,为了加深对LDDM框架的理解,我们继续来看pla ...
- Android Camx 架构介绍
Android Camx 架构介绍 原文链接:深入理解高通Camx Hal 概览 高通平台的Camera架构从以前用的mm-camera转向camx-chi,完全是两样不同的东西:软件架构不同.代码位 ...
- 【论文阅读】Optimization-Based Collision Avoidance
前言与参考 论文地址:https://ieeexplore.ieee.org/document/9062306 文章是2018年5月提出的,但是到了2020年才发表到ACC 所以时间轴上写的是2021 ...