【问题标题】:MYSQL Error 1064 when importing stored proceduresMYSQL 导入存储过程时报错 1064
【发布时间】:2011-04-18 06:08:23
【问题描述】:

我正在导入一个存储过程,该过程刚刚从我的开发服务器导出到我的生产服务器中,我在 phymyadmin 中遇到了以下错误。

SQL query: Documentation

$$ CREATE DEFINER = `devuser`@`localhost` FUNCTION `get_refundable_amount` (
enrol_id INT
) RETURNS double( 10, 2 ) READS SQL DATA BEGIN DECLARE refundable_amount double( 10, 2 ) DEFAULT 0;

SELECT (
sum( P.amount ) - EI.amount
)
INTO refundable_amount
FROM site_payment_processed AS P
INNER JOIN site_user_enroled AS E ON ( P.enrol_id = E.id
AND P.payment_type = 'Refund' )
INNER JOIN site_user_enroled_invoice AS EI ON EI.enrol_id = E.id
WHERE E.id = enrol_id
GROUP BY E.id;

RETURN (
refundable_amount
);

END$$

MySQL said: Documentation
#1064 - 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 '$

CREATE DEFINER=`devuser`@`localhost` FUNCTION `get_refundable_amount`' at line 1 

【问题讨论】:

    标签: mysql stored-procedures phpmyadmin mysql-error-1064


    【解决方案1】:

    用新定义的分隔符包围存储过程代码的主体(例如,从 ; 到 $$)。

    DELIMITER $$
    CREATE DEFINER = `devuser`@`localhost` FUNCTION `get_refundable_amount` (
    enrol_id INT
    ) RETURNS double( 10, 2 ) READS SQL DATA BEGIN DECLARE refundable_amount double( 10, 2 ) DEFAULT 0;
    
    SELECT (
    sum( P.amount ) - EI.amount
    )
    INTO refundable_amount
    FROM site_payment_processed AS P
    INNER JOIN site_user_enroled AS E ON ( P.enrol_id = E.id
    AND P.payment_type = 'Refund' )
    INNER JOIN site_user_enroled_invoice AS EI ON EI.enrol_id = E.id
    WHERE E.id = enrol_id
    GROUP BY E.id;
    
    RETURN (
    refundable_amount
    );
    
    END $$
    DELIMITER ;
    

    【讨论】:

      【解决方案2】:

      Creating functions in mysql doesnt work - Error 1064 中提出的解决方案完全足够了。

      问题在于 phpMyAdmin。从 mysql 命令行运行效果很好。

      【讨论】:

        猜你喜欢
        • 2012-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-22
        • 2018-06-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多