问题描述
我有一个用于在登台表和MST表之间合并数据的MYSQL存储过程。
CREATE PROCEDURE `LDA_MERGE_TRACTOR_EQUPIMENT`()
BEGIN
INSERT IGNORE
INTO Appian.LDA_CETARIS_TRACTOR_EQUIPMENT_MST(
`Asset #`,`Fleet Code`,`Description`,`Asset Category`,`Asset Type`,`Asset Item`
)
SELECT
`Asset #`,`Faleet Code`,`Asset Item`
FROM
Appian.LDA_CETARIS_TRACTOR_EQUIPMENT_STAGING stg
ORDER BY
`Asset #`
ON DUPLICATE KEY
UPDATE
`Fleet Code` = stg.`Fleet Code`,`Description` = stg.`Description`,`Asset Category`= stg.`Asset Category`,`Asset Type` = stg.`Asset Type`,`Asset Item` = stg.`Asset Item`;
END
Asset #
是两个表的主键。但我收到错误消息:
#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 '' at line 29
Line 29: `Asset Item` = stg.`Asset Item`;
有人可以帮助我吗?谢谢!
解决方法
您需要按如下所示定义delimeter
,
DELIMITER $$
CREATE PROCEDURE `LDA_MERGE_TRACTOR_EQUPIMENT`()
BEGIN
INSERT IGNORE
INTO Appian.LDA_CETARIS_TRACTOR_EQUIPMENT_MST(
`Asset #`,`Fleet Code`,`Description`,`Asset Category`,`Asset Type`,`Asset Item`
)
SELECT
`Asset #`,`Faleet Code`,`Asset Item`
FROM
Appian.LDA_CETARIS_TRACTOR_EQUIPMENT_STAGING stg
ORDER BY
`Asset #`
ON DUPLICATE KEY
UPDATE
`Fleet Code` = stg.`Fleet Code`,`Description` = stg.`Description`,`Asset Category`= stg.`Asset Category`,`Asset Type` = stg.`Asset Type`,`Asset Item` = stg.`Asset Item`;
END$$
DELIMITER ;
有关更多信息,请访问this。