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. mysql 删除重复数据保留一条

    验证:mysql 5.6版本 方法一: delete a from table a left join( select (id) from table group by studentName,cla ...

  2. Codeforces Round #370 (Div. 2) E. Memory and Casinos 线段树

    E. Memory and Casinos 题目连接: http://codeforces.com/contest/712/problem/E Description There are n casi ...

  3. Mutual Training for Wannafly Union #1解题报告

    ---恢复内容开始--- q神等人组织的vjudge上的多校训练,题目基本上都来自于CF,#1是上周进行的,参加后感觉收获很多,因为上周准备期中比较忙,解题报告现在补上. 比赛地址(兼题目地址) A题 ...

  4. hdu 1052 (greedy algorithm) 分类: hdoj 2015-06-18 16:49 35人阅读 评论(0) 收藏

    thanks to http://acm.hdu.edu.cn/discuss/problem/post/reply.php?action=support&postid=19638&m ...

  5. 去掉安卓中activity的标题栏

    去掉所有Activity界面的标题栏 修改AndroidManifest.xml 在application 标签中添加android:theme="@android:style/Theme. ...

  6. 当一个activity中按钮过多时怎么办?

    这几天看极客学院的视频,跟视频中的老师学到的一些小技巧~~ .setOnClickListener(this) 通过重写this(我猜的是重写),下面有onClicked() package exam ...

  7. ubuntu下安装svn服务器

    sudo apt-get install apache2 sudo apt-get install subversion sudo apt-get install libapache2-svn 其次, ...

  8. 简单poi读取excel

    1.添加依赖jar包 maven配置: <!-- poi being --> <dependency> <groupId>org.apache.poi</gr ...

  9. 1、datatable与datagrid之间的绑定

    1.前台代码: 插入一个datagrid控件,设置几列. 这里有两点要注意: 1)为了显示所要查询的日期,我将前台的列名与后台查询出来的日期绑定了,用了x:Name这个属性 2)与后台datatabl ...

  10. oracle数据库解析json格式

    随着非关系型数据大规模使用,以json格式产生的数据也出现在我所管理的Oracle数据库的CLOB字段里面,使用过程中就需要解析出指定键的值. 使用了最新版本 如果Oracle版本为12.1.0.2的 ...