Recuperación de un número conocido de conjuntos resultados a partir de un procedimiento almacenado de una aplicación JDBC

La recuperación de un número conocido de conjuntos de resultados a partir de un procedimiento almacenado es una tarea más simple que recuperar un número desconocido de conjuntos resultados.

Procedimiento

Siga estos pasos para recuperar conjuntos de resultados cuando conoce su número y contenido:

  1. Invoque el método Statement.execute , el método PreparedStatement.execute o el método CallableStatement.execute para llamar al procedimiento almacenado.

    Utilice PreparedStatement.execute si el procedimiento almacenado tiene parámetros de entrada.

  2. Invoque el método getResultSet para obtener el primer conjunto de resultados, que se encuentra en un objeto ResultSet .
  3. En un bucle, coloque el cursor utilizando el método next y recupere datos de cada columna de la fila actual del objeto ResultSet utilizando métodos getXXX .
  4. Si no hay conjuntos de resultados, repita los siguientes pasos n-1 veces:
    1. Invoque el método " getMoreResults " para cerrar el conjunto de resultados actual y apuntar al siguiente conjunto de resultados.
    2. Invoque el método getResultSet para obtener el siguiente conjunto de resultados, que se encuentra en un objeto ResultSet .
    3. En un bucle, coloque el cursor utilizando el método next y recupere datos de cada columna de la fila actual del objeto ResultSet utilizando métodos getXXX .

Ejemplo

El código de programa siguiente muestra la recuperación de dos conjuntos de resultados. El primer conjunto de resultados contiene una columna INTEGER y el segundo conjunto de resultados contiene una columna CHAR. Los números que aparecen a la derecha de algunas sentencias corresponden a los pasos descritos anteriormente.
CallableStatement cstmt;
ResultSet rs;
int i;
String s;
…
cstmt.execute();                        // Call the stored procedure       1 
rs = cstmt.getResultSet();              // Get the first result set        2 
while (rs.next()) {                     // Position the cursor             3 
 i = rs.getInt(1);                      // Retrieve current result set value
 System.out.println("Value from first result set = " + i);  
                                        // Print the value
}
cstmt.getMoreResults();                 // Point to the second result set  4a 
                                        // and close the first result set
rs = cstmt.getResultSet();              // Get the second result set       4b 
while (rs.next()) {                     // Position the cursor             4c 
 s = rs.getString(1);                   // Retrieve current result set value
 System.out.println("Value from second result set = " + s); 
                                        // Print the value
}
rs.close();                             // Close the result set
cstmt.close();                          // Close the statement