本帖最后由 zer0142 于 2012-03-24 17:30:49 编辑

解决方案 »

  1.   

    参考 : http://forums.mysql.com/read.php?38,505961
      

  2.   

    参照horace20博客: http://blog.csdn.net/horace20/article/details/7056151 3、[Err] 1414 - OUT or INOUT argument 1 for routine *.* is not a variable or NEW pseudo-variable in BEFORE trigger
    此信息也是提示我们传入的参数不对,*.*的存储过程参数为输出(或输入)参数,而我们可能传入相反的参数,例如要求为输出参数,而我们传入的参数非会话变量,即会报此错。
    例:
    CALL p13(a); -- 或者CALL p13(0);
    提示信息:
    [Err] 1414 - OUT or INOUT argument 1 for routine test.p13 is not a variable or NEW pseudo-variable in BEFORE trigger
    改正:
    CALL p13(@a);
    SELECT @a;
      

  3.   

    关键存储过程是否有问题,先执行一下。
    是否call调用参数的时候有问题。
      

  4.   

    DELIMITER $$DROP PROCEDURE IF EXISTS `up_MCon_Ins` $$
    CREATE  PROCEDURE `up_MCon_Ins`(
     
     IN  SCern_VarC varchar(800), 
     IN  Id_Int Int,  
     IN  ChlNo_Int Int,  
     IN  UsName_VarC varchar(800) , 
     
     OUT ReturnValues_Int INT
    )
    PROC:
    BEGINDECLARE IsExists_Int INT;DECLARE EXIT HANDLER FOR SQLSTATE'23000' 
    BEGIN
    SET ReturnValues_Int = 1;
    ROLLBACK;
    END;SET AUTOCOMMIT = 0;
    START TRANSACTION;SET ReturnValues_Int = 0;SELECT COUNT(1) INTO IsExists_Int FROM E_TerInfo WHERE TI_Id_Int = Id_Int ;
    IF IsExists_Int = 0 THEN 
    SET ReturnValues_Int = 2;
    ROLLBACK;
    LEAVE PROC;
    END IF;   SELECT COUNT(1) INTO IsExists_Int FROM MCon WHERE MC_SCern_VarC = SCern_VarC;
    IF IsExists_Int = 0 THEN 
    SET ReturnValues_Int = 2;
    ROLLBACK;
    LEAVE PROC;
    END IF;   INSERT INTO MCon(MC_SCern_VarC,MC_TI_Id_Int,MC_ChlNo_Int,MC_UsName_VarC)
           VALUES(SCern_VarC,TI_Id_Int,ChlNo_Int,UsName_VarC);COMMIT;END PROC $$DELIMITER ;能执行,逻辑可能有问题!
      

  5.   

    CALL的时候 报错 :OUT or INOUT argument 5 for routine Up_MCn_Inser is not a variable or NEW pseudo-variable in BEFORE trigger