Al ejecutar un procedimiento almacenado, en realidad puede devolver varios objetos ResultSet y/o actualizar los recuentos si hace varias declaraciones.
Usas CallableStatement para ejecutar el proceso y luego getResultSet() o getUpdateCount() para obtener el resultado correcto. Para múltiples conjuntos de resultados/declaraciones, llame a getMoreResults() para moverse a través de los resultados del proceso almacenado.
Para un caso simple como este, solo debe llamar a getResultSet() una vez y procesarlo.