解决方案 »

  1.   

    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RETURN INT
        RETURN ((0.8 * OLDBL) + (0.2 * NEWTOTAL));
    CREATE PROCEDURE PRO' at line 1以上都是错误提示。
      

  2.   


    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RETURN INT
        RETURN ((0.8 * OLDBL) + (0.2 * NEWTOTAL));
    CREATE PROCEDURE PRO' at line 1以上都是错误提示。 
      

  3.   

    delimiter $$
    CREATE FUNCTION FUNC_GETBL(NEWTOTAL INTEGER, OLDBL INTEGER) RETURNS INTEGER
    BEGIN
        RETURN ((0.8 * OLDBL) + (0.2 * NEWTOTAL));
    END$$
      

  4.   


    定义不成功确实就是没有加这个分隔符,现已解决。
    另外,请问,我该如何调用这个函数和过程呢?
    我使用
    SET NEW.PACKET_DBL = SELECT FUNC_GETBL(NEW.PACKET_TOTAL, @PDBL_DAY_OLD);
    CALL PROC_CHECK_ALARM(NEW.PACKET_TOTAL, @PDBL_DAY_OLD);结果提示:
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT FUNC_GETBL(NEW.PACKET_TOTAL, @PDBL_DAY_OLD);
    CALL PROC_CHECK_ALARM(NEW.' at line 30
      

  5.   

    SET NEW.PACKET_DBL = SELECT FUNC_GETBL(NEW.PACKET_TOTAL, @PDBL_DAY_OLD);
    去掉SELECT
      

  6.   


    非常感谢!!!我还有一个问题,因为我的表太多,每个表都要建立一个这样的触发器,能不能把触发器这整个写成一个过程,然后定义触发器的时候,直接调用这个过程就好呢?如果可以的话,过程里面可以直接使用NEW.这种吗?触发器是可以的哦。
      

  7.   

    过程是不能使用NEW.这种的,NEW和OLD只存在于触发器
    我建议你一个个的定义触发器