最近开发的系统要求生成很多唯一的单证号,单证号的规则 前缀_yyyyMMdd+顺序号,如 P_201210160001, P_201210160002。
因为生成多种的单证号。于是在系统中建了一个单证号种子表BAS_SEQ_SEED
ID (PK)
|
主键ID
|
BIGINT
|
NET_ID
|
网络ID
|
BIGINT
|
COMP_ID
|
加盟公司ID
|
BIGINT
|
SEED_TYPE
|
种子类型
|
SMALLINT
|
SEED_DATE
|
日期
|
VARCHAR(16)
|
SEED_VALUE
|
种子值
|
SMALLINT
|
SEED_PREFIX
|
种子前缀
|
VARCHAR(6)
|
SEED_SPLIT
|
种子分隔符
|
VARCHAR(2)
|
CREATE_TIME
|
|
VARCHAR(19)
|
其中NET_ID、COMP_ID、SEED_TYPE建立一个唯一索引
生成的单证号有存储过程来实现
CREATE PROCEDURE PROC_SEQ_SEED_GET
( IN net_id_in bigint, --网络ID
IN comp_id_in bigint, --公司ID
IN seed_type_in integer,--序列号类型
IN seed_date_in VARCHAR(16),--当前日期yyyymmdd格式
OUT return_value VARCHAR(32) --返回值
)
P1: BEGIN
DECLARE seed_value_t integer;
DECLARE seed_date_t varchar(16);
DECLARE return_value_t integer DEFAULT 1;
DECLARE rs1 CURSOR WITH RETURN FOR
select SEED_VALUE,SEED_DATE FROM BAS_SEQ_SEED as t where t.NET_ID=net_id_in and t.COMP_ID=comp_id_in and t.SEED_TYPE=seed_type_in for update WITH RR USE AND KEEP UPDATE LOCKS;
OPEN rs1;
FETCH rs1 into seed_value_t ,seed_date_t;
IF (seed_value_t is null) then --记录不存在
begin
insert INTO BAS_SEQ_SEED(ID,NET_ID,COMP_ID,SEED_TYPE,SEED_DATE,SEED_VALUE)
VALUES
(NEXTVAL FOR SE_EXPRESSBAS,net_id_in,comp_id_in,seed_type_in,seed_date_in,1);
SET return_value_t = 1;
end;
else
begin
--set seed_date_in= SCM_WULIU.ts_fmt(current timestamp,'yyyymmdd');
if(seed_date_in=seed_date_t) then --当天
begin
update BAS_SEQ_SEED set SEED_VALUE=SEED_VALUE+1 where NET_ID=net_id_in and COMP_ID=comp_id_in and SEED_TYPE=seed_type_in;
SET return_value_t = seed_value_t+1;
end;
else --非当天
begin
update BAS_SEQ_SEED set SEED_DATE=seed_date_in,SEED_VALUE=1 where NET_ID=net_id_in and COMP_ID=comp_id_in and SEED_TYPE=seed_type_in;
SET return_value_t = 1;
end;
end if;
end;
end if;
if(return_value_t<10) then
set returnvalue=seed_date_in ||'000'||char(return_value_t);
elseif(return_value_t>=10 AND return_value_t<100) then
set returnvalue=seed_date_in ||'00'||char(return_value_t);
elseif(return_value_t>=100 AND return_value_t<1000) then
set returnvalue=seed_date_in ||'0'||char(return_value_t);
else
set returnvalue=seed_date_in||char(return_value_t);
end if;
close rs1;
END P1
大数据量并发测试生成流程号唯一。
java调用存储过程
try {
Session session = this.getHibernateSession();
String sql ="{call SCM_WULIU.PROC_SEQ_SEED_GET(?,?,?,?,?)}";
CallableStatement cs = session.connection().prepareCall(sql);// 存储过程调用
cs.setLong(1, net_id);
cs.setLong(2, comp_id);
cs.setShort(3, seed_type);
cs.setString(4,PubMethod.getCurSysDate("yyyyMMdd"));
cs.registerOutParameter(5, Types.CHAR);
cs.execute();
result = cs.getString(5); //得到输出参数
session.flush();
} catch (Exception he) {
throw he;
} finally {
closeSession();
}
分享到:
相关推荐
存储过程实现流水号,可以实现防止并发生成重复的流水号,.net 技术,sql server 数据库编写,可以参考学习哦
下面将详细介绍SQL Server 2000和DB2中分页存储过程的实现,以及DB2如何自动生成流水号。 首先,让我们看看SQL Server 2000的分页存储过程。在SQL Server 2000中,由于没有内置的OFFSET和FETCH NEXT功能,我们通常...
### DB2自动生成数据库的语句 #### 一、引言 在数据库管理与开发过程中,经常需要创建或重建数据库来满足不同的需求场景。对于IBM的DB2数据库管理系统而言,如何利用DB2命令行工具自动生成数据库是一个重要的技能点...
DB2Class(码到成功)代码生成器是一款为C#数据库程序员设计的在线自动代码生成器,其生成的代码基于面向对象的思想和MVC架构设计。主要实现在项目中数据库表的基类代码的自动生成,包括生成属性、添加、修改、删除...
### 使用db2top和db2advis生成索引建议 #### db2top工具介绍与配置 `db2top`是IBM DB2数据库管理系统的性能监控工具之一,它可以帮助数据库管理员实时监控DB2数据库实例的运行状况,从而及时发现并解决性能问题。...
本教程将详细讲解如何使用Mybatis连接DB2数据库并进行逆向工程,生成Java实体类、Mapper接口和XML映射文件。 首先,我们了解逆向工程(Reverse Engineering)的概念。在数据库开发中,逆向工程是指从现有的数据库...
在IBM DB2数据库管理系统中,SQL助手(SQL Assist)是一个非常强大的工具,它能帮助用户生成、修改和执行SQL查询语句。对于那些对SQL语法不是很熟悉或是希望提高查询效率的用户来说,SQL助手无疑是一个福音。下面...
其主要功能是根据某个类型如:MSSQL的数据库,生成目标数据库:MSSQL,Oracle,Db2的数据脚本。这是一个命令行工具,具体说明可以参见源码中的注释,或使用dbuilder /help 查看使用帮助信息。本程序完全开源,您可以...
"DB2唯一免费版入门"指的是DB2Express-C版本,它是IBM为个人和小型企业提供的一个免费、功能丰富的数据库解决方案。本篇文章将深入探讨DB2Express-C的安装、配置、基本操作以及常见问题解决,帮助初学者快速入门。 ...
DB2ASP是一个可以自动将ACCESS数据库文件转化为对应的ASP代码的软件。 本软件能够让你可视化操作数据库,轻松设置SQL语句,生成常见ASP信息列表,信息递交入数据库,以及查询表单。无须重复编写大量的数据库操作...
静默模式,很高效的一种批量创建多套db2数据库的解决方案,只需要简单将多套数据库创建要求在配置文件中配置好,运行自动生成脚本,即可快速根据要求生成所有数据库的创建脚本,方便,高效,实用。
Linux 下 DB2 常用命令 DB2 是一个 relation database management system(关系数据库管理系统),广泛应用于企业级的数据存储和管理中。在 Linux 环境下,DB2 提供了丰富的命令行工具,用于管理和维护数据库。下面...
DB2是IBM公司开发的一款关系型数据库管理系统,广泛应用于企业级数据存储和管理。本压缩包包含DB2数据库的安装包以及链接服务器驱动,对于理解DB2数据库的安装过程和使用至关重要。 首先,我们来详细了解DB2数据库...
DB2是IBM公司开发的一款关系型数据库管理系统,广泛应用于企业级数据存储和管理。在DB2 11.5版本中,JDBC(Java Database Connectivity)驱动是连接Java应用程序与DB2数据库的关键组件。JDBC驱动允许Java代码通过...
3. 使用系统时间来创建一个文件夹,该文件夹的命名以系统时间戳为依据,确保每次备份生成的文件夹都是唯一的。 4. 通过db2move命令执行备份操作。db2move命令将数据导出到指定的文件夹中,而db2look命令则生成相应...
本教程将详细介绍如何使用TPC-DS工具来批量生成db2测试数据,以及涉及到的相关技术知识点。 首先,`tpcds-kit-master.zip`是一个包含TPC-DS工具源码的压缩包,解压后可以获取到生成测试数据所需的所有脚本和配置...
db2look 是一个 DB2 命令行工具,用于生成数据库对象的 DDL 脚本。使用 db2look,我们可以导出数据库结构,例如表结构、索引、视图等。 语法:db2look -d db_name -e -a -x -i db_username -w db_passwd -o file_...
无论是Linux还是Windows操作系统环境,了解如何查看DB2的端口号对于系统管理员和数据库开发者而言都是必备技能。本文将深入探讨在Linux和Windows操作系统下查看DB2端口号的方法,帮助读者更好地管理DB2服务。 ### ...
db2驱动包 db2jcc4.jar db2jcc4.jar db2java.jar db2jcc_javax.jar db2jcc_license_cisuz.jar db2jcc_license_cu.jar db2policy.jar,压缩包无加密,可以放心下载,良心资源。