Java - CallableStatement MySQL

   
Vista:

CallableStatement MySQL

Publicado por Jaime Castillo Montes (33 intervenciones) el 30/05/2008 18:19:05
hola a todo el mundo
tengo un pequeño problema con un SP que esta guardado en una BD de MySQL
al momento de correr el callable statement me dice:

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Result consisted of more than one row

y no se si sea un error en mi codigo, o sea que el SP este mal
si alguien me puede ayudar muchas gracias
hasta pronto

con esto mando llamar al SP, antes de hacer esto hago una consulta con un statement y un executequery, y funciona perfecto, pero necesito hacer funcionar el SP.

ResultSet rs1 = null;
CallableStatement cStmt = conexion.prepareCall("{ call prueba1(?,?)}");
cStmt.registerOutParameter(1, Types.VARCHAR);
cStmt.registerOutParameter(2, Types.INTEGER);
cStmt.execute();
rs1 = (ResultSet)cStmt.getObject(1);
while(rs1.next()){
System.out.println (rs1.getString (1) + " " + rs1.getInt (2));
}

y este es mi SP, la tabla solo tiene esos dos campos.

DELIMITER $$

DROP PROCEDURE IF EXISTS `alco`.`prueba1` $$
CREATE PROCEDURE `prueba1`(out nom varchar(20), out ed integer)
begin
declare nom varchar(20);
declare ed integer;
select * into nom, ed from empleados;
end $$

DELIMITER ;

muchas gracias a todos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:CallableStatement MySQL

Publicado por Pol (5 intervenciones) el 08/06/2008 16:37:11
alguien tiene idea de como programar en .nuv?¿?¿
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:CallableStatement MySQL

Publicado por Dario (1 intervención) el 21/07/2008 22:50:10
hola supongo que ya lo resolviste epro yo probaria poniendo:
rs1 = cStmt.executequery();

si lo solucionaste me podrias decir como Gracias :D. be happy
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:CallableStatement MySQL

Publicado por Jaime Castillo Montes (17 intervenciones) el 28/07/2008 18:31:11
ajam
efectivamente ya lo solucione
ai te va

el store procedure keda asi

create procedure allEmpleados()
select * from Empleados;

y la llamada al store procedure keda asi

public ArrayList getEmpleados(){
ArrayList empleados = new ArrayList();
EmpleadosVO empleadosvo = new EmpleadosVO();
try{
CallableStatement call = conn.prepareCall("{ call allEmpleados() }");
ResultSet rs1 = null;
call.executeQuery();
rs1 = call.getResultSet();
while(rs1.next()){
empleadosvo = new EmpleadosVO();
empleadosvo.setNombre(rs1.getString("Nombre"));
empleadosvo.setId(rs1.getInt("id"));
empleados.add(empleadosvo);
}
}catch(Exception ex){
System.out.println("excepcion: " + ex);
}
rs1.close();
call.close();
return empelados.
}

y para pasarle parametros al store


create procedure insertEmpleados(pid integer, pnombre varchar(50))
insert into Empleados(id, nombre) values(pid, pnombre);

public void insertEmpleado(EmpleadosVO empleadosvo){

try{
CallableStatement call = conn.prepareCall("{ call insertEmpleado(?,?) }");
call.setString(1, empleadosvo.getNombre());
call.setInt(2, empleadosvo.getId());
call.executeQuery();
}catch(Exception ex){
System.out.println("excepcion: " + ex);
}
}

espero te sirva
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:CallableStatement MySQL

Publicado por rey's (1 intervención) el 08/05/2011 23:05:04
yeaa brother me ayudo yo estaba haciendo algo parecido
este era mi metodo para hacer llamar a mi sp y este me haria una consulta sin embargo java m arrojaba un error de filas
public void reportVenta(){
try{
CallableStatement consultaVentas = conexion.prepareCall("{call Reporte_Ventas(?)}");
consultaVentas.registerOutParameter(1,Types.VARCHAR);
consultaVentas.execute();

System.out.println(consultaVentas.getString(1));
catch(Exception e){e.printStackTrace();}
}


cuestion que lo resolvi con esto

public void reportVenta(){
try{
CallableStatement consultaVentas = conexion.prepareCall("{call Reporte_Ventas()}");
ResultSet rs1 = null;
rs1 = consultaVentas.getResultSet();
while(rs1.next())
System.out.println(rs1.getString("Empleado.nombre"));
}
catch(Exception e){e.printStackTrace();}
}

como podemos ver en este ultimo ya no ahi que mandarle parametros ps como tu conoces tu sp sabes que campos tiene en este campo yo obtube todas las filas de la columna Empleado.nombre
saludosss
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar