Foros del Web » Programación para mayores de 30 ;) » Java »

Problemas con StoreProcedures y Java

Estas en el tema de Problemas con StoreProcedures y Java en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 29/10/2008, 23:05
 
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
  #2 (permalink)  
Antiguo 30/10/2008, 02:28
 
Fecha de Ingreso: octubre-2008
Mensajes: 22
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Problemas con StoreProcedures y Java

Jejejejeje problema solucionado

el problema no estaba en el codigo, era en la version del conector estaba usando el conector 3 cuando este no maneja StoreProcedures.

Los conectores que manejan ya el Storeprocedure (claro esta que MySQL acaba de incluirlos en el server community) son la version 5.+

Quien lo diria

Gracias de todas formas, quise poner que ya lo solucione por si alguine tiene el mismo problema.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:27.