【问题标题】:systax error in stored procedures存储过程中的语法错误
【发布时间】:2013-06-12 23:25:45
【问题描述】:

在 php-myadmin 中。在运行此查询时,我得到它就像 ..Import 已成功完成,执行了 0 个查询。 (getpaywall.com_2013-06-16.sql)

但它没有给我程序。请解决这个问题:

DELIMITER $;
CREATE PROCEDURE `ISSUE_REFUND`(IN buyer_user_id INT, IN order_id INT, IN refund_amount DECIMAL(5,2), IN refund_feedback TEXT)
BEGIN
    SET autocommit=0;
    START TRANSACTION;
    SELECT customer_user_id,paid_amount,status INTO @userid,@paidamount,@orderstatus FROM orders WHERE id=order_id;
    IF @orderstatus='failed' OR @orderstatus='refunded' OR @orderstatus='partial_refunded' THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Error: Order already refunded or failed!', MYSQL_ERRNO = 1004;
        ROLLBACK;
    ELSE
        IF @userid=buyer_user_id THEN
            IF refund_amount <= @paidamount THEN
                IF refund_amount=@paidamount THEN
                    SET @type1='refunded';
                ELSE
                    SET @type1='partial_refunded';
                END IF;
                UPDATE orders SET status=@type1,refunded_comment=refund_feedback,refunded_amount=refund_amount WHERE id=order_id;
                COMMIT;
            ELSE
                SIGNAL SQLSTATE '45000'
                SET MESSAGE_TEXT = 'Error: Refund amount cannot be greater than paidamount!', MYSQL_ERRNO = 1005;
                ROLLBACK;
            END IF;
        ELSE
            SIGNAL SQLSTATE '45000'
            SET MESSAGE_TEXT = 'Error: Customer ID in orders does not match with given buyer_user_id!', MYSQL_ERRNO = 1003;
            ROLLBACK;
        END IF;
    END IF;
END;$
DELIMITER ;$

当我使用

通过终端运行它时

mysql -u root -p paywall

我有一个错误,上面写着

ERROR 1064 (42000) at line 2: 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 ' SET autocommit=0;
    START TRANSACTION;
    SELECT customer_user_id,paid_' at line 3

【问题讨论】:

    标签: mysql stored-procedures mysqli phpmyadmin


    【解决方案1】:

    当您导出一个过程时,您会发现您导出的数据库的用户名更改该用户名。

    【讨论】:

    • ERROR 1064 (42000) at line 2: 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 'SET autocommit=0; 附近使用的正确语法; START TRANSACTION;....这是什么意思,我没明白 SELECT customer_user_id,paid_' 在第 3 行
    猜你喜欢
    • 2018-05-12
    • 2011-04-18
    • 2012-04-12
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多