import java.sql.CallableStatement; import java.sql.SQLException; import java.sql.Types; import org.hibernate.HibernateException; import org.hibernate.Session; import org.springframework.orm.hibernate3. HibernateTransactionManager; public class ScreenMethodSessionImp extends DefaultBaseManager implements ScreenMethodSession{ /**50*/ public static Integer PAGE_NUMBER = 50; //预到货预警-初始化数据-fdj-001-4 public void screenAsnPre(){ HibernateTransactionManager t = (HibernateTransactionManager) applicationContext.getBean("transactionManager"); Session session = t.getSessionFactory().getCurrentSession(); String produce = "call insert_screen_asn_pre(?,?,?)"; CallableStatement call = null; String mes = "success"; try { call = session.connection().prepareCall(produce); call.setInt(1, PAGE_NUMBER); call.registerOutParameter(2, Types.INTEGER); call.registerOutParameter(3, Types.VARCHAR); call.execute(); if(call.getInt(2)!=0){ mes = call.getString(3); mes = MyUtils.font(mes); } } catch (HibernateException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }finally{ if(call!=null){ try { call.close(); } catch (SQLException e) { e.printStackTrace(); } } } LocalizedMessage.addLocalizedMessage(mes); } }
create or replace procedure insert_screen_asn_pre (PAGE_NUMBER IN int,ISERROR OUT int,errorMes OUT varchar2) as type cursors is ref cursor; curs cursors; V_SUP_NAME SCREEN_ASN_PRE.Sup_Name%type; V_ASN_CODE SCREEN_ASN_PRE.Asn_Code%type; V_ARRIVAL_PRE SCREEN_ASN_PRE.Arrival_Pre%type; nums int:=0; begin open curs for select sup.name,a.code,a.estimate_date from wms_asn a left join wms_organization sup on sup.id = a.supplier_id where a.status in ('OPEN','ACTIVE') and a.estimate_date is not null and not exists(select 1 from SCREEN_ASN_PRE sc where sc.asn_code = a.code) ; loop fetch curs into V_SUP_NAME,V_ASN_CODE,V_ARRIVAL_PRE; exit when curs%notfound; insert into SCREEN_ASN_PRE(TYPE,Sup_Name,ASN_CODE,ARRIVAL_PRE) values('预到货预警',V_SUP_NAME,V_ASN_CODE,V_ARRIVAL_PRE); nums:= nums+1; --dbms_output.put_line('loop:'||nums); if nums >= PAGE_NUMBER then commit; nums:=0; end if; end loop; --dbms_output.put_line('end loop:'||nums); if nums >0 then commit; nums:=0; end if; ISERROR:=0; --dbms_output.put_line('end if:'||nums); exception when others then ISERROR:=1; errorMes:=sqlerrm; dbms_output.enable(buffer_size => null); dbms_output.put_line(dbms_utility.format_error_backtrace); --dbms_output.put_line('sqlcode:'||sqlcode); dbms_output.put_line('sqlerrm:'||sqlerrm); rollback; close curs; end;
相关推荐
本话题将详细讲解如何使用Java调用带有参数的Oracle存储过程,并获取存储过程返回的集合。 首先,Oracle存储过程是一种预编译的SQL语句集合,它可以在数据库服务器端执行,提高性能,减少网络传输。`PROCEDURE.sql`...
在Java编程中,调用数据库的存储过程并处理返回结果是常见的任务,特别是在需要执行复杂数据库操作或者封装业务逻辑时。本文将详细探讨如何在Java中调用存储过程,并处理返回的数组类型数据。 首先,存储过程是一种...
值得注意的是,上述代码中的文件名列表(如Project1.cfg、Unit1.dcu等)与Java调用存储过程无关,它们看起来像是Delphi或FreePascal项目的文件,这些文件通常用于描述项目配置、单元信息、表单布局等,而不是与Java...
本篇文章将深入探讨如何使用Java调用Oracle存储过程,并通过游标获取存储过程中返回的临时表数据。 首先,Oracle存储过程是一种在数据库端执行的预编译SQL语句和PL/SQL代码集合。它可以接收参数、执行业务逻辑并...
在Java编程中,调用数据库存储过程是一种常见的操作,特别是在处理复杂的业务逻辑或者批量数据操作时。存储过程是由一组SQL语句组成的预编译代码,它们存储在数据库中,可以被多次调用,提高效率并简化代码管理。...
这个例子展示了如何调用名为`sp_getCustomerById`的存储过程,该过程接收一个整数ID作为参数,并返回匹配的客户信息。 8. **事务管理** 如果存储过程涉及多个数据库操作,可能需要考虑事务管理。使用`Connection....
此外,对于更复杂的情况,比如存储过程返回多结果集,可能需要使用`ResultSetMetaData`来获取列信息,然后遍历结果集。 参考上述步骤,你可以根据自己的需求修改并实现调用Oracle存储过程的Java代码。确保正确配置...
捕获`SQLException`,根据错误码或异常信息进行相应的处理。 五、批处理调用 如果需要调用多个存储过程或函数,可以使用`CallableStatement.addBatch()`方法将多个调用语句添加到批处理队列,然后用`...
3. **Java Stack(Java栈)**:每个线程都有自己的Java栈,用于存储方法调用的局部变量、操作数栈和方法返回地址。当栈溢出时,会抛出`java.lang.StackOverflowError`。 4. **Program Counter Register(程序计数器...
" hyq "); CallableStatement cstmt = conn.prepareCall("{ call ...需要注意的是,在使用Java调用存储过程时,要确保驱动程序已正确导入,并且数据库连接信息是准确的,还要处理可能出现的异常,确保程序的健壮性。
以上就是关于Java调用MySQL数据库存储过程的基础知识和实践操作,实际应用中可能需要考虑异常处理、连接池管理、多参数处理以及不同类型的存储过程返回值等复杂情况。熟练掌握这些技能,将有助于提升Java应用程序与...
Java调用Oracle分页存储过程是一项常见的数据库操作,尤其在处理大数据量时,为了提高查询效率和用户体验,分页查询显得尤为重要。Oracle数据库提供了一种高效的方法,即通过创建存储过程来实现分页功能,而Java作为...
在Java中使用存储过程涉及到多个知识点,包括数据库连接、CallableStatement接口的应用以及具体的SQL语句调用等。本文将从这些方面入手,详细介绍如何在Java应用程序中调用存储过程。 ### 一、数据库连接 #### 1.1...
在这个例子中,我们展示了如何调用一个简单的存储过程并打印返回的员工信息。如果你的存储过程更复杂,可能需要处理更多的输入/输出参数和结果集。在实际开发中,注意处理异常和关闭数据库连接,以保持良好的编程...
Java与Oracle存储过程是数据库应用开发中的重要技术结合,它们在企业级系统中广泛使用,尤其是在数据处理和业务逻辑复杂的场景下。Oracle存储过程是一种在数据库服务器端编写的程序,可以包含一系列SQL语句和控制流...
本示例将深入探讨如何使用Java来调用存储过程,并处理返回的结果。存储过程是预编译的SQL语句集合,可以提高性能、安全性,并减少网络流量。 首先,确保你已经安装了JDBC驱动,这是Java连接数据库的基础。例如,...
Java操作存储过程是一种常见的数据库交互方式,特别是在处理复杂的业务逻辑或需要高性能的数据处理时。存储过程是预编译的SQL语句集合,存储在数据库服务器中,可以视为可重用的功能模块。Java作为广泛使用的后端...