PLSQL 逻辑多线程
PROCEDURE get_sheetid(i_topic IN VARCHAR2, o_newsheetid OUT VARCHAR2) IS
PRAGMA AUTONOMOUS_TRANSACTION;
v_sheettype NUMBER; --代码名称
BEGIN
SELECT t.sheettype
INTO v_sheettype
FROM sheetidrule t
WHERE t.sheettypename = i_topic
FOR UPDATE;
---调用函数返回sheetid
tl_getnewsheetid(v_sheettype, '', o_newsheetid);
commit;
END get_sheetid;
CREATE OR REPLACE PROCEDURE JVI2.TL_GetNewSheetID
(
I_SheetType IN VARCHAR2,
I_SpecifiedPrefix IN VARCHAR2,
O_NewSheetID OUT VARCHAR2
)
AS
-------------------------------------------------------------
--TL_GetNewSheetID 接口库取单据号码过程
--断 点: 99101nn
--参 数:
--返 回:
--算 法:
--建 立: DDP 2011-09-06
------------------------------------------------------------
v_Err INTEGER := -20101;
v_BreakPoint INTEGER;
v_Msg VARCHAR2(255);
v_PrefixType INTEGER;
v_PreFix VARCHAR2(6);
v_SerialNumber INTEGER;
v_SNumber VARCHAR2(6);
v_ResetDate DATE;
v_i_ResetDate INTEGER;
v_YYYYMMDD VARCHAR2(20);
v_i_YYYYMMDD VARCHAR2(20);
v_DailyReset INTEGER;
BEGIN
v_BreakPoint := 9910110;
v_Msg := ' ';
v_YYYYMMDD := to_char(SYSDATE,'yyyyMMdd');
BEGIN
SELECT prefix,prefixtype,serialnumber,trunc(ResetDate),DailyReset
INTO v_PreFix,v_PrefixType,v_SerialNumber,v_ResetDate,v_DailyReset
FROM sheetidrule WHERE sheettype=I_SheetType;
EXCEPTION WHEN NO_DATA_FOUND THEN
v_Msg := '单据类型['||to_char(I_SheetType)||'未设置!';
Raise_Application_Error(-20051,v_Msg);
END;
IF v_DailyReset = 1 THEN
-- 日结清零
v_i_YYYYMMDD := to_number(to_char(SYSDATE,'yyyyMMdd'));
v_i_ResetDate := to_number(to_char(v_ResetDate,'yyyyMMdd'));
IF v_i_YYYYMMDD != v_i_ResetDate THEN
UPDATE sheetidrule set ResetDate=SYSDATE,serialnumber=1 WHERE sheettype=I_SheetType;
v_SerialNumber :=1;
END IF;
ELSIF v_DailyReset=2 THEN
-- 月结清零
v_i_YYYYMMDD := to_number(to_char(SYSDATE,'yyyyMM'));
v_i_ResetDate := to_number(to_char(v_ResetDate,'yyyyMM'));
IF v_i_YYYYMMDD != v_i_ResetDate THEN
UPDATE sheetidrule SET ResetDate=SYSDATE,serialnumber=1 WHERE sheettype=I_SheetType;
v_SerialNumber :=1;
END IF;
END IF;
-- 将序号格式化成6位字符串,不够的补0
v_SNumber := lpad(to_number(v_SerialNumber),6,0);
IF v_PrefixType = 0 THEN
IF v_PreFix IS NOT NULL THEN
O_NewSheetID := 'JV'||I_SheetType||v_YYYYMMDD||v_SNumber;
ELSE
O_NewSheetID := v_YYYYMMDD||v_SNumber;
END IF;
ELSIF v_PrefixType = 1 THEN
RAISE_APPLICATION_ERROR(-20001,'机构编码(店号)暂时不能使用');
ELSIF v_PrefixType = 2 THEN
RAISE_APPLICATION_ERROR(-20002,'BUID暂时不能使用');
END IF;
-- 修改[流水号],递加
UPDATE sheetidrule SET serialnumber=serialnumber+1 WHERE sheettype=I_SheetType;
EXCEPTION WHEN OTHERS THEN
v_Msg := REPLACE(SQLERRM,'ORA' || V_Err || ': ');
RAISE_APPLICATION_ERROR(-20001,To_Char(v_BreakPoint) || '-' || v_Msg);
END TL_GetNewSheetID;
/
PLSQL 逻辑多线程的更多相关文章
- PLSQL 逻辑多线程机制
CREATE OR REPLACE PACKAGE jv_para_pkg IS PROCEDURE main(i_job_name VARCHAR2, i_job ...
- java多线程(2)---生命周期、线程通讯
java生命周期.线程通讯 一.生命周期 有关线程生命周期就要看下面这张图,围绕这张图讲解它的方法的含义,和不同方法间的区别. 1.yield()方法 yield()让当前正在运行的线程回到就绪 ...
- 浅谈利用PLSQL的多线程处理机制,加快处理大数据表的效率
我们在处理大数据表的时候经常会感觉的处理速度不够快,效率不够高,那么今天下面我就来简单实现下PLSQL的多线程编程处理数据: 我模拟一个简单的场景,把某一张表中的数据(当然这张表的数据非常大)同步到目 ...
- Reactor模式详解
转自:http://www.blogjava.net/DLevin/archive/2015/09/02/427045.html 前记 第一次听到Reactor模式是三年前的某个晚上,一个室友突然跑过 ...
- [改善Java代码]不使用stop方法停止线程
线程启动完毕后,在运行可能需要终止,Java提供的终止方法只有一个stop,但是不建议使用此方法,因为它有以下三个问题: (1)stop方法是过时的 从Java编码规则来说,已经过时的方式不建议采用. ...
- jbpmAPI-5
Part II. jBPM Core 5.1.概述本章介绍了API需要加载过程和执行它们.更多的细节如何定义过程本身,看看在BPMN 2.0章.与流程引擎交互(例如,开始一个过程),你需要建立一个会话 ...
- C++面试笔记(3)
20. 浅拷贝与深拷贝 如何理解C++中的浅拷贝与深拷贝 深拷贝和浅拷贝 在进行对象拷贝时,当对象包含对其他资源的引用,如果需要拷贝这个独享所引用的对象,那就是深拷贝,否则就是浅拷贝 *** 21.构 ...
- 编写高质量代码:改善Java程序的151个建议 --[117~128]
编写高质量代码:改善Java程序的151个建议 --[117~128] Thread 不推荐覆写start方法 先看下Thread源码: public synchronized void start( ...
- 转一篇:Reactor模式
转载自:http://www.blogjava.net/DLevin/archive/2015/09/02/427045.html 前记 第一次听到Reactor模式是三年前的某个晚上,一个室友突然跑 ...
随机推荐
- cellular neural networks(CNN)原理以及应用
一.CNN的原理 1.CNN的思想: (1)借鉴了hopfield神经网络和CA a.hopfield的非线性动力学(主要是用于优化问题,比如旅行商问题等NP问题),Hopfield的能量函数的概念, ...
- iOS开发拓展篇—音频处理(音乐播放器4)
iOS开发拓展篇—音频处理(音乐播放器4) 说明:该文主要介绍音乐播放器实现过程中的一些细节控制. 实现的效果: 一.完整的代码 YYPlayingViewController.m文件 // // Y ...
- MVN使用随笔
001 创建项目 mvn archetype:generate -DgroupId=com.company.push.monitor -DartifactId=push-monitor -Darche ...
- UIActionSheet的使用
UIActionSheet是在iOS弹出的选择按钮项,可以添加多项,并为每项添加点击事件. 为了快速完成这例子,我们打开Xcode 4.3.2, 先建立一个single view applicatio ...
- 建筑行业如何用BPM替换OA?
2015年4月,K2正式与上海水石建筑规划设计有限公司签约. 为提高公司运作流程的效率,有效的对各流程的运作管理和优化,降低成本,同时提高公司的资金管理水平,水石公司利用K2系统作为整个公司流程的管理 ...
- stanford Protege 4.3 ERROR: Bundle org.protege.common 解决方法
我的java版本是jdk1.8.0_45,安装了protege后打开总显示: ERROR: Bundle org.protege.common [1] Error starting file:/hom ...
- vs git extensions简单使用方法
一.准备工具 0.下载Git windows版本下载 http://git-scm.com/download 1.下载Git Extensions.地址http://sourceforge.net/p ...
- Jmeter—3 http请求—content-type与参数
本文讲三种content-type以及在Jmeter中对应的参数输入方式 第一部分:目前工作中涉及到的content-type 有三种: content-type:在Request Headers里, ...
- jQuery.ajax() 函数详解
jQuery.ajax()函数用于通过后台HTTP请求加载远程数据. jQuery.ajax()函数是jQuery封装的AJAX技术实现,通过该函数,我们无需刷新当前页面即可获取远程服务器上的数据. ...
- 传智播客JavaWeb day06-jstl
一.jsp标签(sun公司提供的) 二.EL表达式 三.jstl (javaserver pages standard tag library) 1.为什么要有jstl jsp标签太弱,el表达式功能 ...