Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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 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

当我使用这个过程时,我得到了错误“expected 8,get 7”。我不明白这一点,如果我们看代码,有7个输入参数和一个输出参数。调用过程时似乎也需要指定out参数,知道为什么吗?

您需要引用out参数

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)