2

我正在尝试在我的数据库上链接多个操作以更改存储库,以简化开发/生产环境之间的数据库一致性。我创建了一个包含多个命令的文件,并且遇到了这个我似乎无法找到参考的奇怪错误。

一个片段如下:

deallocate prepare stmt;

END$$

drop procedure if exists SearchByWantListCount;

delimiter $$

CREATE DEFINER=`webaccess`@`%` PROCEDURE `SearchByWantListCount`(
    IN loggedInUser INT,
    IN filter varchar(255))
BEGIN

delimiter红色下划线显示,我收到错误消息:

语法错误,意外 IDENT_QUOTED,期待 $end

4

2 回答 2

2

我添加了一个

delimiter ;
drop procedure if exists SearchByWantListCount;

这似乎让一切都很开心....

于 2013-02-16T00:27:57.230 回答
1

那是因为当您想使用分隔符时,您不需要将分隔符放在 $$ 之前。简单地说$$。

您使用的语法定义了分隔符,这是之前已经完成的事情(因为我们可以看到您在 END 上使用了分隔符)。

为什么是“分隔符;” 工作是因为“如果存在 SearchByWantListCount 则删除过程;”末尾的分号 然后被算作一个分隔符。您是否将“delimiter $$”放在这里,您需要在放置线和下一个过程的开始(SearchByWantListCount)之间放置一个$$,或者如果您想重新定义它,则需要在“delimiter $$”之前。

顺便说一句,你不需要你的“分隔符;” 因为您将 $$ 放在前一个 END 符号之后。只需删除 $$ 之前的“分隔符”。

于 2013-07-29T08:04:51.077 回答