我正在学习如何使用MySQL的存储过程,并且因为我似乎无法解决的错误消息而陷入困境。有人给了我一个脚本来创建存储过程here。当我将其粘贴到phpMyAdmin> SQL,我收到此错误消息:#1064 - 您的SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“DELIMITER”附近使用正确的语法
然而它确实创建了一个存储过程 - 尽管它不起作用。有一次,我有一个实际工作,但我无法重新创建它。另一个常见错误是1054 Unknown column(theld)。我检查了this discussion,但我的代码已经包含在BEGIN / END中。
所以我想知道是否可以通过简单地编辑phpMyAdmin中的代码来使其工作。我修改了代码以定位不同的表 - gz_life_mammals - 也用ParentID替换字段Parent。 (gz_life_mammals已经有一个名为Parent的文本字段。)
现在我进入phpMyAdmin>程序> showMammals>执行,我得到相同的1054错误消息。如果我单击编辑例程>参数,Direction和Type的值是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