`
yinbinhome
  • 浏览: 123690 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

JAVA存储过程调用

阅读更多

创建需要的测试表:create table Test(tid varchar2(10),tname varchar2(10));

第一种情况:无返回值.

create or replace procedure test_a(param1 in varchar2,param2 in varchar2) as

begin

insert into test value(param1,param2);

end;

Java调用代码:

package com.test;

import java.sql.*;

import java.io.*;

import java.sql.*;

public class TestProcA
{
public TestProcA(){

}

public static void main(String []args)
{

ResultSet rs = null;
Connection conn = null;
CallableStatement proc = null;

try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:test", "test", "test");
proc = conn.prepareCall("{ call test_a(?,?) }");
proc.setString(1, "1001");
proc.setString(2, "TestA");
proc.execute();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(null!=rs){
rs.close();

if(null!=proc){
proc.close();
}

if(null!=conn){
conn.close();
}
}
}catch(Exception ex){

}
}
}

}

第二种情况:有返回值的存储过程(返回值非列表).

存储过程为:
create or replace procedure test_b(param1 in varchar2,param2 out varchar2)
as
begin
select tname into param2 from test where tid=param1;
end;

Java调用代码:

package com.test;

import java.sql.*;

import java.io.*;

import java.sql.*;

public class TestProcB
{
public TestProcB(){

}

public static void main(String []args)
{

Connection conn = null;
CallableStatement proc = null;

try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:test", "test", "test");
proc = conn.prepareCall("{ call test_b(?,?) }");
proc.setString(1, "1001");
proc.registerOutParameter(2, Types.VARCHAR);
proc.execute();
System.out.println("Output is:"+proc.getString(2));
}catch(Exception e){
e.printStackTrace();
}finally{
try{

if(null!=proc){
proc.close();
}

if(null!=conn){
conn.close();
}

}catch(Exception ex){

}
}
}

}

第三种情况:返回列表.

由于oracle存储过程没有返回值,它的所有返回值都是通过out参数来替代的,列表同样也不例外,但由于是集合,所以不能用一般的参数,必须要用pagkage了.要分两部分来写:
create or replace package tpackage as
type t_cursor is ref cursor;
procedure test_c(c_ref out t_cursor);
end ;

create or replace package body tpackage as
procedure test_c(c_ref out t_cursor) is
begin
open c_ref for select * from test;
end test_c;
end tpackage;

Java调用代码:

package com.test;

import java.sql.*;

import java.io.*;

import java.sql.*;

public class TestProcB
{
public TestProcB(){

}

public static void main(String []args)
{

Connection conn = null;
CallableStatement proc = null;
ResultSet rs = null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:test", "test", "test");
proc = conn.prepareCall("{? = call tpackage.test_b(?) }");

proc.registerOutParameter(1,OracleTypes.CURSOR);
proc.execute();
while(rs.next()){
System.out.println(rs.getObject(1)+"\t"+rs.getObject(2));
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(null!=rs){
rs.close();
if(null!=proc){
proc.close();
}

if(null!=conn){
conn.close();
}
}
}catch(Exception ex){

}
}
}

}

Hibernate调用oracle存储过程

 this.pnumberManager.getHibernateTemplate().execute(

  new HibernateCallback() ...{

   public Object doInHibernate(Session session)

   throws HibernateException, SQLException ...{

   CallableStatement cs = session.connection().prepareCall("{call modifyapppnumber_remain(?)}");

   cs.setString(1, foundationid);

   cs.execute();

   return null;

  }

 });

分享到:
评论

相关推荐

    java调用存储过程

    java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程

    java调用存储过程(含out参数)

    在Java编程中,调用数据库的存储过程是常见的任务,特别是在处理复杂的业务逻辑或需要高效数据操作时。本文将详细讲解如何在Java中调用含有`OUT`参数的存储过程,帮助开发者解决这类问题。 首先,理解存储过程的...

    java 调用存储过程

    在Java编程中,调用存储过程是连接数据库并执行预定义SQL代码的一种常见方式。存储过程是由数据库管理系统(如MySQL, Oracle, SQL Server等)编译并存储的一组操作,可以包含复杂的逻辑、条件判断、循环等,提高数据...

    Java实现调用MySQL存储过程详解

    在Java应用程序中,可以通过Java Database Connectivity (JDBC) API来调用MySQL的存储过程。 首先,确保你已经安装了MySQL数据库,并且在数据库中创建了一个或多个存储过程。例如,`findAllBook`、`pro_test`和`pro...

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

    在调用过程中,可能会遇到SQL异常或其他运行时异常,需要使用try-catch-finally结构进行异常处理。捕获`SQLException`,根据错误码或异常信息进行相应的处理。 五、批处理调用 如果需要调用多个存储过程或函数,...

    Java调用存储过程--传入集合参数

    - **异常处理**:在转换和调用过程中,应充分考虑异常情况,如连接失败、类型不匹配等,确保应用程序的健壮性和容错能力。 #### 结论 通过本文的探讨,我们不仅了解了如何在Java中调用Oracle存储过程并传递集合...

    JAVA调用存储过程

    ### JAVA调用存储过程知识点详解 #### 一、无结果集返回的存储过程调用 在Java中调用不返回结果集的存储过程时,主要步骤包括建立连接、准备调用语句、设置输入参数、执行存储过程以及处理可能产生的警告信息。 1...

    java调用存储过程实例

    在IT领域,特别是数据库操作与Java编程的交集部分,调用存储过程是常见的需求之一。根据提供的文件信息,我们可以深入解析如何在Java中通过JDBC(Java Database Connectivity)调用Oracle数据库的存储过程。 ### ...

    Java对存储过程的调用方法

    在Java编程中,调用数据库中的存储过程是常见的任务,特别是在复杂的业务逻辑处理和数据操作时。本篇文章将深入探讨如何使用Java来调用存储过程,以及相关的工具和技术。 首先,存储过程是数据库中预编译的一组SQL...

    springboot mybatis 动态调用oracle存储过程,通过存储过程名称,就能动态调用存储过程、java动态调用or

    能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来...只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。 已经使用在多个项目中 全开源项目 请放心下载

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

    在Java编程中,调用数据库存储过程是一种常见的操作,特别是在处理复杂的业务逻辑或者批量数据操作时。本篇文章将深入探讨如何使用Java与MySQL数据库进行交互,实现调用存储过程,并提供一个测试通过的实例。 首先...

    Java调用带参数的存储过程并返回集合

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

    JAVA调用ORACLE存储过程通用类

    - **`StoredQueryInfo`**:该类封装了存储过程的元信息,如名称、参数等,方便在调用过程中使用。 - **`RowMapper`**:这是Apache Commons DBUtils提供的一个接口,用于从数据库结果集中提取数据并映射到Java对象。...

    sybase数据库存储过程调用外部JAVA

    Sybase数据库系统,作为一款企业级的关系型数据库管理系统,提供了与Java语言的集成,使得开发人员可以在存储过程中调用外部Java程序,这对于无需依赖系统服务器进行定时任务调度的情况尤其有用。本文将详细介绍如何...

    Java调用Mysql存储过程

    在Java编程中,调用MySQL存储过程是一种常见的数据库交互方式,尤其在处理复杂业务逻辑或大量数据操作时。本文将详细讲解如何通过Java来执行MySQL的存储过程。 首先,了解存储过程的基本概念。存储过程是预编译在...

    存储过程调用java程序

    1. **Java调用存储过程**:在Java应用中,我们可以通过JDBC(Java Database Connectivity)API来调用数据库中的存储过程。例如,使用CallableStatement对象,设置输入/输出参数,并执行存储过程。这种方式使得Java...

    java 调用db2存储过程

    "java 调用db2存储过程" 本文将详细介绍 Java 调用 DB2 存储过程的方法和步骤,并提供了详细的代码示例。 一、创建存储过程 在 DB2 中,创建存储过程需要使用 CREATE PROCEDURE 语句。例如,创建一个无参存储过程...

Global site tag (gtag.js) - Google Analytics