通过phpMyAdmin修复存储过程

通过phpMyAdmin修复存储过程,php,mysql,stored-procedures,phpmyadmin,Php,Mysql,Stored Procedures,Phpmyadmin,我正在学习如何使用MySQL的存储过程,并且似乎无法修复的错误消息让我大吃一惊。有人给了我一个创建存储过程的脚本。当我将它粘贴到phpMyAdmin>SQL中时,我收到了以下错误消息:1064-您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以了解第1行“DELIMITER”附近使用的正确语法 但是它确实创建了一个存储过程——尽管它不起作用。在某一点上,我有一个真正有效的,但我还没有能够重建它。另一个常见错误是1054未知列THLD。我检查了,但是我的代码已经包装在BEGIN/EN

我正在学习如何使用MySQL的存储过程,并且似乎无法修复的错误消息让我大吃一惊。有人给了我一个创建存储过程的脚本。当我将它粘贴到phpMyAdmin>SQL中时,我收到了以下错误消息:1064-您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以了解第1行“DELIMITER”附近使用的正确语法

但是它确实创建了一个存储过程——尽管它不起作用。在某一点上,我有一个真正有效的,但我还没有能够重建它。另一个常见错误是1054未知列THLD。我检查了,但是我的代码已经包装在BEGIN/END中了

因此,我想知道是否有可能通过简单地在phpMyAdmin中编辑代码来解决问题。我修改了代码,以针对不同的表-gz_life_,并将字段Parent替换为ParentID。gz_life_哺乳动物已经有一个名为Parent的文本字段

现在,当我进入phpMyAdmin>Procedures>showDominals>Execute时,我得到了相同的1054错误消息。如果单击编辑例程>参数,则方向和类型的值为IN和INT;其他的都是空白

是否可以通过phpMyAdmin修复此问题,或者是否有更好的软件程序用于此工作?对不起,解释得太长了

BEGIN
declare bDoneYet boolean default false;
declare working_on int;
declare next_level int;
declare theCount int;
declare i int;
SET i = 1;

CREATE temporary TABLE xxFindChildenxx
(   N int not null,
processed int not null,
level int not null,
ParentID int not null
);
set bDoneYet=false;
insert into xxFindChildenxx (N,processed,level,ParentID) select      theId,0,0,0;
while (!bDoneYet) do
select count(*) into theCount from xxFindChildenxx where processed=0;

if (theCount=0) then 
    set bDoneYet=true;
else
    SELECT N,level+1 INTO working_on,next_level FROM xxFindChildenxx  where processed=0 limit 1;
    insert into xxFindChildenxx (N,processed,level,ParentID)
    select N,0,next_level,ParentID
    from gz_life_mammals
    where parent=working_on;
    update xxFindChildenxx set processed=1 where N=working_on;
end if;
end while;
delete from xxFindChildenxx where N=theId;
select level,count(*) as lvlCount from xxFindChildenxx group by level;
drop table xxFindChildenxx;
END

另见。DELIMITER关键字不是MySQL的标准部分,而是Workbench和CLI客户端的客户端功能。为了在PHPMyAdmin中实现同样的功能,我相信有一个输入设置来定义可选的分隔符,您必须这样做才能对内部;要在SP定义中工作,还不清楚ID应该来自哪里。它在SP定义中被引用两次,但未定义为输入参数。它是从你的声明中删除的吗?这是另一件令人困惑的事情;我看到人们同时使用//和??作为分隔符。当我单击SQL以粘贴到存储过程脚本中时,底部有一个分隔符框,默认情况下显示分号。我的存储过程脚本以分号结尾,因此我假设这是标准的。我想我最初是通过删除结束符或最后一个分隔符创建了一个工作SP,但现在无法重新创建它;我在给我的存储过程脚本中看到了同样的异常情况。我得看看是否能找到一个更早的版本来说明如何处理这个问题;答案是泰德-