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 逻辑多线程机制的更多相关文章

  1. PLSQL 逻辑多线程

    PROCEDURE get_sheetid(i_topic IN VARCHAR2, o_newsheetid OUT VARCHAR2) IS    PRAGMA AUTONOMOUS_TRANSA ...

  2. Java的多线程机制系列:不得不提的volatile及指令重排序(happen-before)

    一.不得不提的volatile volatile是个很老的关键字,几乎伴随着JDK的诞生而诞生,我们都知道这个关键字,但又不太清楚什么时候会使用它:我们在JDK及开源框架中随处可见这个关键字,但并发专 ...

  3. Java的多线程机制系列:(四)不得不提的volatile及指令重排序(happen-before)

    一.不得不提的volatile volatile是个很老的关键字,几乎伴随着JDK的诞生而诞生,我们都知道这个关键字,但又不太清楚什么时候会使用它:我们在JDK及开源框架中随处可见这个关键字,但并发专 ...

  4. Java的多线程机制系列:(三)synchronized的同步原理

    synchronized关键字是JDK5之实现锁(包括互斥性和可见性)的唯一途径(volatile关键字能保证可见性,但不能保证互斥性,详细参见后文关于vloatile的详述章节),其在字节码上编译为 ...

  5. 《Exploring in UE4》多线程机制详解[原理分析]

    转自:https://zhuanlan.zhihu.com/c_164452593 目录一.概述二."标准"多线程三.AsyncTask系统3.1 FQueuedThreadPoo ...

  6. Java的多线程机制系列:(一)总述及基础概念

    前言 这一系列多线程的文章,一方面是个人对Java现有的多线程机制的学习和记录,另一方面是希望能给不熟悉Java多线程机制.或有一定基础但理解还不够深的读者一个比较全面的介绍,旨在使读者对Java的多 ...

  7. Python GIL 多线程机制 (C source code)

    最近阅读<Python源码剖析>对进程线程的封装解释: GIL,Global Interpreter Lock,对于python的多线程机制非常重要,其如何实现的?代码中实现如下: 指向一 ...

  8. python多线程机制

    Python中的线程从一开始就是操作系统的原生线程.而Python虚拟机也同样使用一个全局解释器锁(Global Interpreter Lock,GIL)来互斥线程多Python虚拟机的使用. GI ...

  9. C/C++ 多线程机制

    一.C/C++多线程操作说明 C/C++多线程基本操作如下: 1. 线程的建立结束 2. 线程的互斥和同步 3. 使用信号量控制线程 4. 线程的基本属性配置 在C/C++代码编写时,使用多线程机制, ...

随机推荐

  1. 如何使CSS3中的animation动画当每滑到一屏时每次都运行

    这个我还没用过,但感觉以后会用到,就随手摘抄一下啦<div id="a1"></div> <div id="a2">< ...

  2. 关于BS响应式的网站建设

    一.首先是导航 html部分: <!-- 导航 --> <nav class="navbar navbar-default navbar-fixed-top"&g ...

  3. ionic本质

    ionic本质一开发工具,ionic项目目录里在大堆东西,一堆插件(plugins),还有一堆npm包(node_modules),其实都是骗人的-( ̄▽ ̄-)~ 什么nodejs,npm只是为了解决 ...

  4. Ubuntu下安装Java环境

    1 Java 8 下载地址 http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs. ...

  5. docker 会这些也够

    $ sudo systemctl start docker $ sudo systemctl stop docker $ sudo systemctl restart docker If you wa ...

  6. STC12C5A60S2 常用的中断源和相关寄存器

    1) 中断源 STC12C5A60S2共有十个中断源,每个中断源可设置4类优先级:当相同优先级下各中断优先级由高到低依次如下: 1.1)INT0(外部中断0) 中断向量地址 0003H, C语言编程: ...

  7. css盒子模型层级3D图

    作为前端开发工程师,大家都应该知道盒子模型.下面用一张图来表达3D盒子模型的层级关系 大家可以看到background-color 在background-image的下一层.这个希望对大家有帮助

  8. Invalid byte 3 of 3-byte UTF-8 sequence

    用maven编译,tomcat启动时报错:IOException parsing XML document from class path resource [applicationContext.x ...

  9. jvm1

    字节码常量池: 01开头的说明是一个utf-8编码的常量,那么后面就一定要跟两个字节也就是四位16进制的数,来表示这个常量占几个字节,然后后面再跟与这个字节数对应长度的utf-8编码的字符串.之所以一 ...

  10. jQuery 的原型关系图,整体把握jQuery

            若干个月前,在博客园中看到一篇文章,内容很简单,就是一幅图,展示的是 jQuery 中各对象之间的关系,当时就觉得,这就是我想要的最直观的总结 jQuery 的方式.在那篇文章中,也有 ...