PLSQL 逻辑多线程机制
CREATE OR REPLACE PACKAGE jv_para_pkg IS
PROCEDURE main(i_job_name VARCHAR2,
i_job_action VARCHAR2,
i_job_count NUMBER);
END jv_para_pkg;
/
CREATE OR REPLACE PACKAGE BODY jv_para_pkg IS
-- 释放一个job
PROCEDURE release_one_job(i_job_name VARCHAR2, i_job_action VARCHAR2) IS
BEGIN
dbms_scheduler.create_job(job_name => i_job_name,
job_type => 'PLSQL_BLOCK',
job_action => i_job_action,
enabled => TRUE);
END;
--清除job运行历史
PROCEDURE purge_job_log(i_job_name_prefix VARCHAR2) IS
CURSOR job_cur IS
SELECT DISTINCT job_name
FROM user_scheduler_job_run_details
WHERE job_name LIKE i_job_name_prefix;
BEGIN
FOR job_rec IN job_cur LOOP
dbms_scheduler.purge_log(log_history => 1,
which_log => 'JOB_AND_WINDOW_LOG',
job_name => job_rec.job_name);
END LOOP;
END;
PROCEDURE main(i_job_name VARCHAR2,
i_job_action VARCHAR2,
i_job_count NUMBER) IS
v_count NUMBER;
BEGIN
dbms_output.put_line(i_job_action);
WHILE TRUE LOOP
FOR i IN 1 .. i_job_count LOOP
SELECT COUNT(1)
INTO v_count
FROM user_scheduler_jobs t
WHERE t.job_name = i_job_name || '_' || i;
IF v_count = 0 THEN
release_one_job(i_job_name => i_job_name || '_' || i,
i_job_action => i_job_action);
-- 找到即退出
RETURN;
END IF;
END LOOP;
-- 等待
dbms_lock.sleep(1);
END LOOP;
--清除job运行历史
purge_job_log(i_job_name || '_%');
END;
END jv_para_pkg;
/
PLSQL 逻辑多线程机制的更多相关文章
- PLSQL 逻辑多线程
PROCEDURE get_sheetid(i_topic IN VARCHAR2, o_newsheetid OUT VARCHAR2) IS PRAGMA AUTONOMOUS_TRANSA ...
- Java的多线程机制系列:不得不提的volatile及指令重排序(happen-before)
一.不得不提的volatile volatile是个很老的关键字,几乎伴随着JDK的诞生而诞生,我们都知道这个关键字,但又不太清楚什么时候会使用它:我们在JDK及开源框架中随处可见这个关键字,但并发专 ...
- Java的多线程机制系列:(四)不得不提的volatile及指令重排序(happen-before)
一.不得不提的volatile volatile是个很老的关键字,几乎伴随着JDK的诞生而诞生,我们都知道这个关键字,但又不太清楚什么时候会使用它:我们在JDK及开源框架中随处可见这个关键字,但并发专 ...
- Java的多线程机制系列:(三)synchronized的同步原理
synchronized关键字是JDK5之实现锁(包括互斥性和可见性)的唯一途径(volatile关键字能保证可见性,但不能保证互斥性,详细参见后文关于vloatile的详述章节),其在字节码上编译为 ...
- 《Exploring in UE4》多线程机制详解[原理分析]
转自:https://zhuanlan.zhihu.com/c_164452593 目录一.概述二."标准"多线程三.AsyncTask系统3.1 FQueuedThreadPoo ...
- Java的多线程机制系列:(一)总述及基础概念
前言 这一系列多线程的文章,一方面是个人对Java现有的多线程机制的学习和记录,另一方面是希望能给不熟悉Java多线程机制.或有一定基础但理解还不够深的读者一个比较全面的介绍,旨在使读者对Java的多 ...
- Python GIL 多线程机制 (C source code)
最近阅读<Python源码剖析>对进程线程的封装解释: GIL,Global Interpreter Lock,对于python的多线程机制非常重要,其如何实现的?代码中实现如下: 指向一 ...
- python多线程机制
Python中的线程从一开始就是操作系统的原生线程.而Python虚拟机也同样使用一个全局解释器锁(Global Interpreter Lock,GIL)来互斥线程多Python虚拟机的使用. GI ...
- C/C++ 多线程机制
一.C/C++多线程操作说明 C/C++多线程基本操作如下: 1. 线程的建立结束 2. 线程的互斥和同步 3. 使用信号量控制线程 4. 线程的基本属性配置 在C/C++代码编写时,使用多线程机制, ...
随机推荐
- iOS开发多线程篇—线程间的通信
iOS开发多线程篇—线程间的通信 一.简单说明 线程间通信:在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信 线程间通信的体现 1个线程传递数据给另1个线程 在1个线程中执行完特定任 ...
- JSON.parse()和JSON.stringify()的区别
1. parse用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age": ...
- XML 链接
公共Webservice 网络上可供测试的Web Service腾讯QQ在线状态 WEB 服务Endpoint: http://www.webxml.com.cn/webservices/qqOn ...
- jQuery 源码中的 camelCase
先看一下源码 //65-72行 // Matches dashed string for camelizing //匹配连字符 ‘-’ 和其后的第一个字母或数字,如果是字母,则替换为大写,如果是数字, ...
- 关于DButils的简单介绍
android中的orm框架,一行代码就可以进行增删改查:支持事务,默认关闭:可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名)等等 ...
- Node.js GET/POST请求
在很多场景中,我们的服务器都需要跟用户的浏览器打交道,如表单提交. 表单提交到服务器一般都使用GET/POST请求. 我将为大家介绍 Node.js GET/POST请求. 获取GET请求内容 由于G ...
- 深入学习JavaScript: apply 方法 详解(转)——非常好
主要我是要解决一下几个问题: 1. apply和call的区别在哪里 2. 什么情况下用apply,什么情况下用call 3. apply的其他巧妙用法(一般 ...
- 如何垂直居中一个<img>?
<!doctype html><html> <head> <meta charset="UTF-8"> <meta name= ...
- 大数据批量插入数据库使用(SqlBulkCopy )效率更高
SqlBulkCopy类是System.Data.SqlClient下的类,我们开发中不常用,甚至不知道有这么一个类的存在,但确实比sql插入,事务批量插入,sql批量拼接插入快很多,比调用存储过程插 ...
- JQuery Jsonp 跨域
需求:两个不同域的网站想利用ajax交互数据 客户端:ajax的dataType参数设置成jsonp,然后设置一个回调函数(jsonCallBack) 服务器端:返回callfunName([{a:& ...