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++代码编写时,使用多线程机制, ...
随机推荐
- 树(二)——二叉树
目录 本章主要讲解内容为: 树的非递归遍历算法,两种版本 树的扩展前缀以及前缀中缀构建方法 源码 btree.cpp btree.h 基础知识 一.定义 二叉树的递归定义:二叉树是每个结点最多含有两棵 ...
- 在POM 4中,<dependency>中还引入了<scope>可以使用5个值
在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署.目前<scope>可以使用5个值: * compile,缺省值,适用于所有 ...
- 20135203齐岳信息安全系统设计基础——实验四&实验五实验报告
见20135217孙小博的博客:http://www.cnblogs.com/sunxiaobo/p/4991861.html
- 配置rc.local开机自启动文件的疑问
有时我们自己在/etc/rc.d/rc.local里面增加的随机器启动的脚本和指令总是不能自动加载和启动,,机器启动后手动执行脚本又能成功,经常被搞得晕头转向的.最近我经过1天的辛苦测试和查找资料,终 ...
- oc程序代码
// // main.m // aa // // Created by rcfwzx on 15/11/20. // Copyright (c) 2015年 rcfwzx. All right ...
- WinForm多线程学习文档
基础篇 怎样创建一个线程 受托管的线程与 Windows线程 前台线程与后台线程 名为BeginXXX和EndXXX的方法是做什么用的 异步和多线程有什么关联 WinForm多线程编程篇 我的多线程W ...
- [转]SecureCRT连接主机时,无法从键盘输入
问题: SecureCRT连接主机时,无法从键盘输入 答案: 最近通过超级终端或者SecureCRT连接主机时,都只能读取设备信息,但是无法从键盘输入,进入不了配置状态,后来仔细检查了配置,居然是流控 ...
- jvm1
字节码常量池: 01开头的说明是一个utf-8编码的常量,那么后面就一定要跟两个字节也就是四位16进制的数,来表示这个常量占几个字节,然后后面再跟与这个字节数对应长度的utf-8编码的字符串.之所以一 ...
- Using Interface Builder记录
1.interface builder的作用主要是用来设计视图,文件的拓展名诶.storyboard或者.xib :这两文件的区别是,.xib文件只能设计一个视图控制器,也就只能显示一个视图,.sto ...
- iOS-音频和视频
一.视频 视频播放器需要添加MediaPlayer.framework. 视频播放主要提供了两个类,一个MPMoviePlayerController, 另一个是MPMoviePlayerViewCo ...