Java 执行存储过程--返回多个结果集

    技术2025-07-12  4

    在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);           }       }   }  

     

    最新回复(0)