这里为大家谈谈Java存储过程调用,我们可以利用Java存储过程简化数据库操作, 利用Java存储过程沟通SQL、XML、Java、J2EE和Web服务。
创建需要的测试表: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 values(param1,param2); end;
Java调用代码:
package com.test; import java.sql.*; import java.io.*; import java.sql.*; public class TestProcA { public Test ProcA(){ } 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("{calltest_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.