下面的代码在没有创建表语句的情况下完美工作。我花了一个小时只看这段简单的代码来发现一个错误。创建表语句引起的MySQL过程语法错误
DELIMITER $$
USE `operations`$$
DROP PROCEDURE IF EXISTS `rc_pending_data_tat_proc`$$
CREATE PROCEDURE `rc_pending_data_tat_proc`()
BEGIN
(
CREATE TABLE rc_pending_tat_temp /*works fine when I remove this*/
SELECT IF(b.retailer IS NULL,a.retailer, b.retailer) AS Retailer,
(CASE
WHEN DATEDIFF(criteria_date,transaction_date)<=50
THEN '<=50'
WHEN DATEDIFF(criteria_date,transaction_date) <=70
THEN '<=70'
WHEN DATEDIFF(criteria_date,transaction_date) <=80
THEN '<=80'
WHEN DATEDIFF(criteria_date,transaction_date) <=90
THEN '<=90'
ELSE
'>90'
END) AS Pending_since
, COUNT(*) AS `count`, CURRENT_TIMESTAMP AS `date`
FROM `rc_pending_data` a
LEFT JOIN `rc_store_retailer_mapping` b
ON a.retailer=b.store_name
GROUP BY 1,2
);
END$$
DELIMITER ;
它给人的错误是非常标准的一个即
错误代码:1064 您的SQL语法错误;检查对应于你的MySQL服务器版本使用附近的正确语法手册“创建表rc_pending_tat_temp SELECT IF(b.retailer IS NULL,a.retailer,b.ret”第4行
嗨尼廷,感谢您的帮助。通过点击和尝试方法来消除错误,这就是它! –