java 调用存储过程案列分析

1:创建存储过程

此存储过程通过传入的参数(Name),返回一个参数(address)。


create or replace procedure demo_procedure(namedemo in varchar2,addressdemo out varchar2)
as
begin 
select address into addressdemo from system.demo where name=namedemo;
end;





2:Java部分:调用存储过程时,要用CallabelStatement的prepareCall 方法。结构:{call 存储过程名(?,?,...)}

在设置参数的时候,输入参数用set,输出参数要registerOutParameter。取出输出参数的值可以直接用CallabelStatement的get方法


import java.sql.CallableStatement;  
import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.ResultSet;  
import java.sql.SQLException;  
import java.sql.Statement;  
import java.sql.Types;  
  
public class TestProcedureTwo {  
  public TestProcedureTwo() {  
  }  
  public static void main(String[] args ){  
    String driver = "oracle.jdbc.driver.OracleDriver";  
    String strUrl = "jdbc:oracle:thin:@localhost:1521:myoracle";  
    Statement stmt = null;  
    ResultSet rs = null;  
    Connection conn = null;  
    try {  
      Class.forName(driver);  
      conn =  DriverManager.getConnection(strUrl, "system", "admin");  
      CallableStatement proc = null; 
      proc = conn.prepareCall("{ call dem_procedure(?,?) }");  //调用存储过程
      proc.setString(1, "kalision");   //存储过程传入的参数
      proc.registerOutParameter(2, Types.VARCHAR);  //存储过程输出的参数
      proc.execute();  
      String testPrint = proc.getString(2);  
      System.out.println("存储过程返回的值是:"+testPrint);  
    }  
    catch (SQLException ex2) {  
      ex2.printStackTrace();  
    }  
    catch (Exception ex2) {  
      ex2.printStackTrace();  
    }  
    finally{  
      try {  
        if(rs != null){  
          rs.close();  
          if(stmt!=null){  
            stmt.close();  
          }  
          if(conn!=null){  
            conn.close();  
          }  
        }  
      }  
      catch (SQLException ex1) {  
      }  
    }  
  }  
}  



 




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java调用存储过程可以使用CallableStatement对象。首先,你需要创建一个CallableStatement对象,并使用prepareCall方法传入存储过程调用语句。例如,你可以使用以下代码创建一个CallableStatement对象并调用存储过程: ```java CallableStatement c = conn.prepareCall("{call FindCusts(?)}"); c.setString(1, "Tom"); ResultSet rs = c.executeQuery(); while (rs.next()) { String cust = rs.getString("customerid"); System.out.println(cust); } c.close(); ``` 在这个例子中,我们创建了一个CallableStatement对象c,并使用setString方法设置存储过程的参数值。然后,我们使用executeQuery方法执行存储过程,并通过ResultSet对象rs获取结果集。最后,我们使用while循环遍历结果集并打印结果。记得在结束后关闭CallableStatement对象。 另外,如果你想在Java中创建存储过程并直接调用,你可以使用Statement对象的executeUpdate方法执行创建存储过程的SQL语句。例如,你可以使用以下代码创建存储过程调用: ```java Statement stmt = conn.createStatement(); stmt.executeUpdate("create procedure OOP as select * from 学生成绩表"); CallableStatement c = conn.prepareCall("{call OOP}"); ResultSet rs = c.executeQuery(); while (rs.next()) { String chinese = rs.getString("Chinese"); System.out.println(chinese); } conn.close(); ``` 在这个例子中,我们使用Statement对象stmt的executeUpdate方法执行创建存储过程的SQL语句。然后,我们使用CallableStatement对象c调用存储过程,并通过ResultSet对象rs获取结果集。最后,我们使用while循环遍历结果集并打印结果。记得在结束后关闭连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值