hola a todos!
Quiero alguien me pueda ayudar en lo siguiente:
Tengo un procedimiento almacenado(sp) al cual deseo llamar desde mi java-jsp
con la siguiente sintaxis:
try {
connJasper.setAutoCommit(false);
CallableStatement cStmt = connJasper.prepareCall("{call crear_planilla_aguinaldo(?,?,?,?)}");
cStmt.setDate(1, sqldateFecha_elab);
cStmt.setDate(2, sqldateFecha_pln);
cStmt.setString(3, idemp_elabora);
cStmt.setString(4, estado);
cStmt.execute();
final ResultSet rs = cStmt.getResultSet();
while (rs.next()) {
String cod = rs.getString("codplnagui");
}
connJasper.commit();
}catch (Exception e) {
connJasper.rollback();
e.printStackTrace();
}finally{
connJasper.close();
}
Mi problema esta en el envio de los parametros ya que estoy ocupando dos campos uno de datetime y otro de date y los otros dos de tipo string
pero en el execute() me da un error y me dice lo siguiente:
MySQLSyntaxErrorException: Incorrect number of arguments for PROCEDURE expected 4, got 0
Que espera 4 parametros el procedimiento eso es correcto y no tiene ninguno.
Ahora el sp es el siguiente:
DELIMITER $$
USE `saerp`$$
DROP PROCEDURE IF EXISTS `crear_planilla_aguinaldo`$$
CREATE DEFINER=`devsoft`@`localhost` PROCEDURE `crear_planilla_aguinaldo`(IN fecha_jsp_elaborado DATETIME,
fecha_jsp_planilla DATE,
jsp_elabora VARCHAR(11),
jsp_estado VARCHAR(2))
BEGIN
SET @fecha_elaborado=fecha_jsp_elaborado;
SET @fecha_planilla=fecha_jsp_planilla;
SET @elabora=jsp_elabora;
SET @estado=jsp_estado;
CALL inicializar_planilla_aguinaldo;
CALL inicializar_volcado;
CALL calcular_sueldo_diario;
CALL calcular_diasxanios;
CALL calcular_monto_aguineto;
END$$
DELIMITER ;
Como podria solventar el problema de enviar los parámetros en la llamada q entiendo q no se produce la llamada, nose porque