Mysql 1318-过程的参数数量不正确 DROP程序`修改`// CREATE DEFINER=`root`@`localhost`PROCEDURE`ModificarUsuario`( 在'Aid`INT中, 在“Aced”VARCHAR(100)中, 在‘Anombre’VARCHAR(100)中, 在'Acargo'VARCHAR(100)中, 在“Acedula”VARCHAR(100)中, 在'Ausuario'VARCHAR(100)中, 在'Apass'VARCHAR(100)中, OUT`res`VARCHAR(10)) 开始 从`usuario`中选择COUNT(usuario)INTO res,其中`cedula`=Aced和`id`Aid; 如果res=0,则 更新“usuario”集合cedula=Aced,nombre=Anombre,cargo=Acargo,usuario=Ausuario,contrasena=Apass,其中cedula=Acedula; 如果结束; 结束
当我使用这个过程时,我得到了错误“expected 8,get 7”。我不明白这一点,如果我们看代码,有7个输入参数和一个输出参数。调用过程时似乎也需要指定out参数,知道为什么吗?您需要引用out参数Mysql 1318-过程的参数数量不正确 DROP程序`修改`// CREATE DEFINER=`root`@`localhost`PROCEDURE`ModificarUsuario`( 在'Aid`INT中, 在“Aced”VARCHAR(100)中, 在‘Anombre’VARCHAR(100)中, 在'Acargo'VARCHAR(100)中, 在“Acedula”VARCHAR(100)中, 在'Ausuario'VARCHAR(100)中, 在'Apass'VARCHAR(100)中, OUT`res`VARCHAR(10)) 开始 从`usuario`中选择COUNT(usuario)INTO res,其中`cedula`=Aced和`id`Aid; 如果res=0,则 更新“usuario”集合cedula=Aced,nombre=Anombre,cargo=Acargo,usuario=Ausuario,contrasena=Apass,其中cedula=Acedula; 如果结束; 结束,mysql,stored-procedures,syntax-error,Mysql,Stored Procedures,Syntax Error,当我使用这个过程时,我得到了错误“expected 8,get 7”。我不明白这一点,如果我们看代码,有7个输入参数和一个输出参数。调用过程时似乎也需要指定out参数,知道为什么吗?您需要引用out参数 DROP PROCEDURE `ModificarUsuario`// CREATE DEFINER=`root`@`localhost` PROCEDURE `ModificarUsuario`( IN `Aid` INT, IN `Aced` VARCHAR(100), I
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
要查看结果执行
选择@a
或选择res
显示对执行存储过程调用修改的查询('6'、'9123'、'Sandra'、'Profesor'、'12345'、'sandru'、'sdf'),您需要传递8个参数。第八个参数将是变量,将有返回值。调用ModificarUsuario('6','9123','Sandra','Profesor','12345','sandru','sdf',a)如果我输入变量第八个,我将得到此错误。1414-例程bdservidor.MODIFICARUASUARIO的OUT或INOUT参数8在触发前不是一个变量或新的伪变量您知道为什么在MySQL Workbench 6.3中@a值不会更新吗?假设我在存储过程中有一个非常简单的if-then-else
。我知道这个值应该改变,但当它不应该改变时,它保持不变。为什么?谢谢因为proc有一个输出,所以我们需要提供一个temp变量来查看输出
CALL ModificarUsuario('6','9123','Sandra','Profesor','12345','sandru','sdf',@a)