`

java返回存储过程异常信息

 
阅读更多
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调用带参数的存储过程并返回集合

    本话题将详细讲解如何使用Java调用带有参数的Oracle存储过程,并获取存储过程返回的集合。 首先,Oracle存储过程是一种预编译的SQL语句集合,它可以在数据库服务器端执行,提高性能,减少网络传输。`PROCEDURE.sql`...

    java调用存储过程返回数组

    在Java编程中,调用数据库的存储过程并处理返回结果是常见的任务,特别是在需要执行复杂数据库操作或者封装业务逻辑时。本文将详细探讨如何在Java中调用存储过程,并处理返回的数组类型数据。 首先,存储过程是一种...

    java 调用存储过程

    值得注意的是,上述代码中的文件名列表(如Project1.cfg、Unit1.dcu等)与Java调用存储过程无关,它们看起来像是Delphi或FreePascal项目的文件,这些文件通常用于描述项目配置、单元信息、表单布局等,而不是与Java...

    Java调用oracle存储过程通过游标返回临时表

    本篇文章将深入探讨如何使用Java调用Oracle存储过程,并通过游标获取存储过程中返回的临时表数据。 首先,Oracle存储过程是一种在数据库端执行的预编译SQL语句和PL/SQL代码集合。它可以接收参数、执行业务逻辑并...

    java 调存储过程

    在Java编程中,调用数据库存储过程是一种常见的操作,特别是在处理复杂的业务逻辑或者批量数据操作时。存储过程是由一组SQL语句组成的预编译代码,它们存储在数据库中,可以被多次调用,提高效率并简化代码管理。...

    java调用存储过程

    这个例子展示了如何调用名为`sp_getCustomerById`的存储过程,该过程接收一个整数ID作为参数,并返回匹配的客户信息。 8. **事务管理** 如果存储过程涉及多个数据库操作,可能需要考虑事务管理。使用`Connection....

    java 调用存储过程 实例

    此外,对于更复杂的情况,比如存储过程返回多结果集,可能需要使用`ResultSetMetaData`来获取列信息,然后遍历结果集。 参考上述步骤,你可以根据自己的需求修改并实现调用Oracle存储过程的Java代码。确保正确配置...

    java调用oracle存储过程或者函数

    捕获`SQLException`,根据错误码或异常信息进行相应的处理。 五、批处理调用 如果需要调用多个存储过程或函数,可以使用`CallableStatement.addBatch()`方法将多个调用语句添加到批处理队列,然后用`...

    java内存机制及异常处理

    3. **Java Stack(Java栈)**:每个线程都有自己的Java栈,用于存储方法调用的局部变量、操作数栈和方法返回地址。当栈溢出时,会抛出`java.lang.StackOverflowError`。 4. **Program Counter Register(程序计数器...

    用java调用oracle存储过程

    " hyq "); CallableStatement cstmt = conn.prepareCall("{ call ...需要注意的是,在使用Java调用存储过程时,要确保驱动程序已正确导入,并且数据库连接信息是准确的,还要处理可能出现的异常,确保程序的健壮性。

    Java调用数据库存储过程[mysql测试通过]

    以上就是关于Java调用MySQL数据库存储过程的基础知识和实践操作,实际应用中可能需要考虑异常处理、连接池管理、多参数处理以及不同类型的存储过程返回值等复杂情况。熟练掌握这些技能,将有助于提升Java应用程序与...

    java调用oracle分页存储过程

    Java调用Oracle分页存储过程是一项常见的数据库操作,尤其在处理大数据量时,为了提高查询效率和用户体验,分页查询显得尤为重要。Oracle数据库提供了一种高效的方法,即通过创建存储过程来实现分页功能,而Java作为...

    在java中使用存储过程

    在Java中使用存储过程涉及到多个知识点,包括数据库连接、CallableStatement接口的应用以及具体的SQL语句调用等。本文将从这些方面入手,详细介绍如何在Java应用程序中调用存储过程。 ### 一、数据库连接 #### 1.1...

    java调用Oracle存储过程的代码

    在这个例子中,我们展示了如何调用一个简单的存储过程并打印返回的员工信息。如果你的存储过程更复杂,可能需要处理更多的输入/输出参数和结果集。在实际开发中,注意处理异常和关闭数据库连接,以保持良好的编程...

    java 与 oracle 存储过程

    Java与Oracle存储过程是数据库应用开发中的重要技术结合,它们在企业级系统中广泛使用,尤其是在数据处理和业务逻辑复杂的场景下。Oracle存储过程是一种在数据库服务器端编写的程序,可以包含一系列SQL语句和控制流...

    java调用存储过程示例

    本示例将深入探讨如何使用Java来调用存储过程,并处理返回的结果。存储过程是预编译的SQL语句集合,可以提高性能、安全性,并减少网络流量。 首先,确保你已经安装了JDBC驱动,这是Java连接数据库的基础。例如,...

    java操作存储过程

    Java操作存储过程是一种常见的数据库交互方式,特别是在处理复杂的业务逻辑或需要高性能的数据处理时。存储过程是预编译的SQL语句集合,存储在数据库服务器中,可以视为可重用的功能模块。Java作为广泛使用的后端...

Global site tag (gtag.js) - Google Analytics