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模式是三年前的某个晚上,一个室友突然跑 ...
随机推荐
- ListView.DragEnter触发不了
经过千百度的搜索之后,终于找到了一点线索,原文是:https://msdn.microsoft.com/en-us/magazine/mt185571.aspx 有能力的可以参阅原文,想省事的可以等待 ...
- JDE FORM开发--checkBox
checkBox设置时,必须指定DD.
- MySQL 句柄数占用过多的解决方法
在Windows下安装MySQL ,用了官方的配置向导生成了my.ini,本以为很安稳了,谁知十多个小时过去之后,系统响应非常慢,看资源管理器的性能卡,发现句柄数竟然达到了10万!怪不得无论使用什么程 ...
- iOS开发网络篇—GET请求和POST请求
iOS开发网络篇—GET请求和POST请求 一.GET请求和POST请求简单说明 创建GET请求 // 1.设置请求路径 NSString *urlStr=[NSString stringWithFo ...
- Android Studio 查看密钥库证书指纹SHA1
打开DOC命令窗体
- mongo
最近一直在用mongodb,有时候会需要用到统计,在网上查了一些资料,最适合用的就是用aggregate,以下介绍一下自己运用的心得.. 别人写过的我就不过多描述了,大家一搜能搜索到N多一样的,我写一 ...
- General Motors China
General Motors Co., one of the world's largest automakers, trace its root back to 1908. The General ...
- JDBC中的PreparedStatement
PreparedStatement类从Statement中继承来. 可以将SQL语句传给数据库做编译处理,即在执行的SQL语句中包含一个或多个IN参数,可以设置IN参数值多次执行SQL语句,不必重新给 ...
- 2016 - 1- 23 iOS中xml解析 (!!!!!!!有坑要解决!!!!!!)
一: iOS中xml解析的几种方式简介 1.官方原生 NSXMLParser :SAX方式解析,使用起来比较简单 2.第三方框架 libxml2 :纯C 同时支持DOM与SAX GDataXML: D ...
- 1、datatable与datagrid之间的绑定
1.前台代码: 插入一个datagrid控件,设置几列. 这里有两点要注意: 1)为了显示所要查询的日期,我将前台的列名与后台查询出来的日期绑定了,用了x:Name这个属性 2)与后台datatabl ...