问题
DROP PROCEDURE `ModificarUsuario`//
CREATE DEFINER=`root`@`localhost` PROCEDURE `ModificarUsuario`(
IN `Aid` INT,
IN `Aced` VARCHAR(100),
IN `Anombre` VARCHAR(100),
IN `Acargo` VARCHAR(100),
IN `Acedula` VARCHAR(100),
IN `Ausuario` VARCHAR(100),
IN `Apass` VARCHAR(100),
OUT `res` VARCHAR(10) )
BEGIN
SELECT COUNT(usuario) INTO res FROM `usuario` WHERE `cedula`=Aced and `id`<>Aid;
IF res =0 THEN
UPDATE `usuario` SET cedula=Aced, nombre=Anombre, cargo=Acargo, usuario=Ausuario, contrasena=Apass WHERE cedula=Acedula;
END IF;
END
When I use this procedure I get the error "expected 8, got 7." I don't understand this, if we look at the code there are 7 input parameters and one out parameter. It seems that the out parameter needs to be specified as well when calling the procedure, any idea why?
回答1:
You need to reference the out parameter
CALL ModificarUsuario('6','9123','Sandra','Profesor','12345','sandru','sdf',@a)
to see result execute Select @a
or Select res
来源:https://stackoverflow.com/questions/24817978/1318-incorrect-number-of-arguments-for-procedure