Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/10/2008, 23:05
patitox04
 
Fecha de Ingreso: octubre-2008
Mensajes: 22
Antigüedad: 15 años, 6 meses
Puntos: 0
Problemas con StoreProcedures y Java

Hola chicos, estoy en un gran problema...

Quiero mandar llamar Storeprocedures desde Java pero me sale una Excepcion al querer hacerlo. Mi codigo de Java es el siguiente:

Código:
DELIMITER |

CREATE PROCEDURE `TotalRequestDelayedByWeek` 
(
  IN  `areaUno`  int,
  IN  `areaDos`  int
)
BEGIN

     DECLARE diaSemana int;
     DECLARE diaInicial int;
     DECLARE diaFinal int;
     DECLARE fechaInicial varchar(8);
     DECLARE fechaFinal varchar(8);

     SET diaSemana = DAYOFWEEK( CURDATE() );
     SET diaInicial = diaSemana - 1;
     SET diaFinal = 7 - diaSemana;
     SET fechaFinal = DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL ( diaFinal - 7 ) DAY ),'%Y%m%d' );
     SET fechaInicial = DATE_FORMAT( DATE_SUB( CURDATE(),INTERVAL ( diaInicial + 7 ) DAY ),'%Y%m%d' );

     IF ( areaDos < 0 )THEN
     	SELECT * FROM requests WHERE area = areaUno AND finished_date >= fechaInicial AND finished_date <= fechaFinal AND internal_status = 3 AND ( DATEDIFF( expected_date, finished_date ) < 0 );
     ELSE
     	SELECT * FROM requests WHERE ( area = areaUno OR area = areaDos ) AND finished_date >= fechaInicial AND finished_date <= fechaFinal AND internal_status = 3 AND ( DATEDIFF( expected_date, finished_date ) < 0 ) ORDER BY area;
     END IF;
END|

DELIMITER ;
Y como mando a llamar el SP desde Java es asi:
Código:
private static final String TOTAL_REQUEST_DELAYED_BY_WEEK = "{ CALL TotalRequestDelayedByWeek( ?, ? ) }";

...

        try{
            Connection connection = getConnection();
            CallableStatement cstm = connection.prepareCall( TOTAL_REQUEST_DELAYED_BY_WEEK );
            cstm.setInt( 1, areaOne );
            cstm.setInt( 2, areaTwo );
            cstm.execute();
            ResultSet rs = cstm.getResultSet();
            while ( rs.next() ) {
                collection.add( this.createRequestDTO( rs ) );
            }
            cstm.close();
            connection.close();
        }catch( SQLException e ){
            throw new SQLException("Cannot execute the SP of Data Base (DAO)");  
        }
Misteriosamente el error me lo lanza "CallableStatement cstm = connection.prepareCall( TOTAL_REQUEST_DELAYED_BY_WEEK );", me gustaria si ustedes pueden decirme:
¿ porque me lanza error?
¿ como obtengo el resultado de StoreProcedure sin mandarle un OUTParameter (tengo otros SP's que creo una tabla temporal y regreso la seleccion de toda la tabla)?

Les agradesco mucho su ayuda y espero su pronta respuesta, realmente ya busque en toda la web sin una solucion clara

Última edición por patitox04; 29/10/2008 a las 23:12