【发布时间】: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