在JAVA中执行存储过程用
CallableStatement callsm= con.prepareCall(strsql);
callsm.execute();
在执行存储过程后,要得到结果集callsm.getResultSet
如果有多个结果集呢?
view plaincopy to clipboardprint?package com.yangtianb.dao; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import com.yangtianb.connctionMannege.ConnectionManager; public class ProcDao { public void proctest(){ Connection con = ConnectionManager.getConnection(); CallableStatement callsm=null; try { String strsql = "{call PROC_DARWEXPERT(?,?,?)}";//sql语句 callsm = con.prepareCall(strsql); //参数设置 callsm.setString(1, "res"); callsm.setString(2, "me"); callsm.setString(3, "111"); //执行 callsm.execute(); //获取结果集 ResultSet rs = callsm.getResultSet(); while(rs.next()){ System.out.println(rs.getString(1)+"a"); } //判断是否有下一个游标 if(callsm.getMoreResults()){//这个判断会自动指向下一个游标 ResultSet rs1 = callsm.getResultSet();//得到第二个结果集 while(rs1.next()){//处理第二个结果集 System.out.println(rs1.getShort(1)); } try{//关闭rs1 if(rs1 != null){ rs1.close(); } if(rs!=null){ rs.close(); } }catch(SQLException e){ e.printStackTrace(); } } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { callsm.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } ConnectionManager.closeConnection(con); } } }