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; } }); } }
---生成流水号 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;
相关推荐
### JAVA调用存储过程知识点详解 #### 一、无结果集返回的存储过程调用 在Java中调用不返回结果集的存储过程时,主要步骤包括建立连接、准备调用语句、设置输入参数、执行存储过程以及处理可能产生的警告信息。 1...
值得注意的是,上述代码中的文件名列表(如Project1.cfg、Unit1.dcu等)与Java调用存储过程无关,它们看起来像是Delphi或FreePascal项目的文件,这些文件通常用于描述项目配置、单元信息、表单布局等,而不是与Java...
### Java调用存储过程实例:详解 #### 存储过程简介 存储过程是一种在数据库中编写的SQL程序,可以接受输入参数,执行一系列操作,并返回结果或输出参数。它们可以提高应用程序的性能、安全性和复用性。在Oracle...
总之,调用存储过程是Java开发中处理数据库操作的重要环节。理解如何设置`IN`和`OUT`参数,并正确地执行和获取结果,将有助于提高代码的效率和可维护性。希望这个详细讲解对你有所帮助,如果你在实践中遇到任何问题...
java调用存储过程,支持获取return值,output返回值,以及查询的表数据,表数据允许有多个查询结果集
总结来说,Java调用存储过程并处理返回数组,需要理解存储过程的定义,正确使用`CallableStatement`或其子类如`OracleCallableStatement`,以及处理Oracle特定数据类型的方法。通过这些技巧,我们可以有效地在Java...
Java调用存储过程是数据库操作中的常见任务,特别是在复杂业务逻辑和数据处理中。存储过程是一种预编译的SQL语句集合,可以在数据库服务器端执行,提高了效率并减少了网络通信量。本文将详细讲解Java如何调用存储...
### Java调用存储过程——传入集合参数:深入解析与实践 #### 核心知识点概览 在Java应用中,调用数据库存储过程时,往往需要处理复杂的参数传递,特别是当参数为集合类型时,这一过程变得更加具有挑战性。本文将...
Java 调用存储过程小结 Java 调用存储过程是指在 Java 程序中调用数据库中的存储过程,以便实现复杂的业务逻辑和数据处理。存储过程是指保存在数据库并在数据库端执行的程序,可以使用特殊的语法在 Java 类中调用...
### Java调用存储过程的两种方法 在Java中调用数据库中的存储过程是常见的操作之一,这不仅可以提高程序性能和代码可维护性,还可以更好地利用数据库的功能。根据提供的标题、描述以及部分内容,本文将详细介绍Java...