public class DefaultWmsGenerateSequenceDaoManager extends HibernateDaoSupport implements WmsGenerateSequenceDaoManager { public Map<String, Object> generateSequence(final String keyName) { return (Map<String, Object>) this.getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { // 需要执行的存储过程 String procedure = "{call wms.GenSeq(?,?)}"; CallableStatement callableStatement = session.connection().prepareCall(procedure); // 设置输入参数 callableStatement.setString(1, keyName); // 注册输出参数 callableStatement.registerOutParameter(2, java.sql.Types.DOUBLE); callableStatement.execute(); // 取回输出参数 Double retValue = callableStatement.getDouble(2); Map<String, Object> result = new HashMap<String, Object>(); result.put("retValue", retValue); callableStatement.close(); return result; } }); } }
GenSeq.sql
---生成流水号 create or replace procedure GenSeq(keyName in varchar, retValue out number) is next_id sequence.next_id%TYPE; id sequence.id%TYPE; ---user seqSequence.nextval for the key id of sequence BEGIN --IF return -1 then identified incorrect call retValue:=-1; SELECT next_id INTO next_id FROM sequence WHERE sequence_key=ltrim(rtrim(keyName));--去掉头为空格 UPDATE sequence SET next_id=next_id+1 WHERE sequence_key=ltrim(rtrim(keyName)); COMMIT; retValue:=next_id+1; --DBMS_OUTPUT.put_line(retValue); EXCEPTION WHEN NO_DATA_FOUND THEN ---New key value found BEGIN INSERT INTO sequence (id,sequence_key,sequence_type,next_id) VALUES (seqSequence.Nextval,keyName,' ',1); retValue:=1; COMMIT; -- DBMS_OUTPUT.put_line(retValue); EXCEPTION WHEN OTHERS THEN ROLLBACK; END; WHEN OTHERS THEN ROLLBACK; end GenSeq;
相关推荐
存储过程实现流水号,可以实现防止并发生成重复的流水号,.net 技术,sql server 数据库编写,可以参考学习哦
本篇文章将深入探讨如何在MyBatis框架中结合MySQL存储过程来生成流水号。 首先,存储过程`GetSerialNo`接受一个输入参数`tsCode`,类型为VARCHAR(50),并返回一个VARCHAR(200)类型的`result`。该过程的主要目的是为...
总的来说,了解如何在MySQL中创建和使用存储过程生成流水号,对于开发高效且健壮的数据库应用至关重要。结合附带的表结构,我们可以构建一个强大的流水号生成系统,既能满足业务需求,又易于扩展和维护。
用于自动生成流水账号的存储过程 有详细的注释
下面将详细介绍SQL Server 2000和DB2中分页存储过程的实现,以及DB2如何自动生成流水号。 首先,让我们看看SQL Server 2000的分页存储过程。在SQL Server 2000中,由于没有内置的OFFSET和FETCH NEXT功能,我们通常...
根据当天日期生成流水单号存储过程 格式为 年月日+'0001'
除了存储过程外,还可以使用函数来自动生成流水号。以下是一个示例: ```sql CREATE FUNCTION f_NextBH() RETURNS char(8) AS BEGIN RETURN (SELECT 'BH' + RIGHT('000000' + CAST(ISNULL(RIGHT(MAX(BH), 6), 0) +...
本文将详细介绍一个生成并发唯一性流水号的解决方案,该方案结合了SQL和C#技术,通过精心设计的表结构、存储过程以及流水号生成规则,实现了高效可靠的流水号生成机制。 首先,我们从表结构的设计开始。为了支持并...
建表sql、生成流水号存储过程
2. **流水号**:生成流水号通常需要一个全局变量,如原子整型(`AtomicInteger`),以保证在多线程环境中的安全性。初始化原子整型为0,每次生成订单号时自增1,然后取其值作为流水号: ```java AtomicInteger ...
这种方法能够生成连续的流水号编码,但可能会在多用户同时操作时产生冲突。为了避免这种冲突,可以在保存之前进行检查或使用其他机制确保唯一性。 ### SQL存储过程应用 存储过程`PWMS_GetMaxNo`的具体实现未在代码...
在Java编程中,生成流水号是一项常见的需求,特别是在金融、电商等系统中,流水号作为交易的唯一标识,对于数据的追踪和管理至关重要。在这个场景中,“java生成流水-格式202001270001”指的是一个Java程序,用于...
总的来说,这个资源对于理解如何在.NET环境中结合C#、ASP.NET和SQL数据库生成流水号非常有价值。通过深入研究源代码,你可以学习到数据库设计、并发控制、事务处理和Web应用开发等多个方面的知识。同时,这也可以...
在.NET开发中,生成流水号是一项...这个资源中的源代码应该包含了上述功能的实现,通过学习和研究,你可以更好地理解如何在.NET环境中生成流水号并与数据库配合使用。这是一个非常实用的技能,在许多项目中都会用到。
本资源提供了一种.NET平台下生成流水号的源代码实现,同时也结合了SQL Server数据库的使用,适用于SQL Server 2005/2008版本,并且兼容Visual Studio 2008/2010开发环境。 首先,生成流水号的主要目标是确保每个...
标签“流水号”表明该程序的核心功能是生成流水号,“自动”意味着这个过程是自动化的,无需人工干预。“delphi源码”则表示这个程序的源代码是用Delphi编写的,对于开发者来说,这意味着他们可以查看、学习甚至修改...
流水号是现在各类系统中单据的必备字段,因为流水...在SqlServer中,可以通过客户端程序来生成新的流水号,也可以利用存储过程来生成.在实际的项目中,利用自定义函数来生成非常方便,方便存储过程调用,也方便客户端的调用.
结合上述要点,以下将详细展开用JS实现基于当前时间随机生成流水号或订单号的知识点。 ### 1. 获取当前时间 在JS中,可以通过Date对象获取当前的时间信息,包括年、月、日、小时、分钟和秒。这是生成流水号或订单号...
在实际应用中,除了上述方法,还可以考虑其他策略来生成流水号,比如使用子表存储未分配的流水号,每次分配时从子表中取出并删除,以防止并发问题。这种方法适用于需要连续流水号但不显示在界面的情况。 总的来说,...