2014-07-18 45 views
3
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 

當我使用此過程時,出現錯誤「expected 8,got 7」。我不明白這一點,如果我們看代碼有7個輸入參數和一個輸出參數。在調用過程時,似乎還需要指定out參數,爲什麼?1318 - PROCEDURE的參數數量不正確

+0

顯示您的查詢執行存儲過程 – Sathish

+0

CALL ModificarUsuario( '6',」 9123','Sandra','Profesor','12345','sandru','sdf') – andreszam24

+3

您需要傳遞8個參數。第8個參數將是變量將具有返回值。 –

回答

8

您需要引用out參數

CALL ModificarUsuario('6','9123','Sandra','Profesor','12345','sandru','sdf',@a) 

看到導致執行Select @aSelect res

+0

任何想法爲什麼在MySQL Workbench 6.3中@a值不會更新?假設我在存儲過程中有一個非常簡單的'if then else'。我知道價值應該改變,但它不應該改變。爲什麼?謝謝! – Metafaniel

相關問題