例程(或过程)仅在PhpMyAdmin中导致第二次运行时出错

时间:2018-12-14 08:19:47

标签: mysql phpmyadmin

好的,我当时是following this answer here,并且我试图在PhpMyAdmin中运行以下过程:

4500 * 15 / 100 = 675

此例程有效,我使用以下SQL运行它:

begin declare v_done tinyint unsigned default 0; declare v_depth smallint unsigned default 0; create temporary table hier( parent_cat_id smallint unsigned, cat_id smallint unsigned, depth smallint unsigned default 0 )engine = memory; insert into hier select parent_cat_id, cat_id, v_depth from categories where cat_id = p_cat_id; /* http://dev.mysql.com/doc/refman/5.0/en/temporary-table-problems.html */ create temporary table tmp engine=memory select * from hier; while not v_done do if exists( select 1 from categories p inner join hier on p.parent_cat_id = hier.cat_id and hier.depth = v_depth) then insert into hier select p.parent_cat_id, p.cat_id, v_depth + 1 from categories p inner join tmp on p.parent_cat_id = tmp.cat_id and tmp.depth = v_depth; set v_depth = v_depth + 1; truncate table tmp; insert into tmp select * from hier where depth = v_depth; else set v_done = 1; end if; end while; select p.cat_id, p.name as category_name, b.cat_id as parent_cat_id, b.name as parent_category_name, hier.depth FROM hier INNER JOIN categories p ON hier.cat_id = p.cat_id LEFT OUTER JOIN categories b ON hier.parent_cat_id = b.cat_id ORDER BY hier.depth, hier.cat_id; drop temporary table if exists hier; drop temporary table if exists tmp; end

然后我得到了想要的结果。

但是,当我再次运行它时,直到PhpMyAdmin出现了一系列错误(从ORDER BY开始),我仍然得到相同的结果:

enter image description here

现在,错误列表持续了很长时间,我认为在PHPMyAdmin中主要是错误,但是为什么会这样呢?尽管我只能在其中找到一个顺序,但它在SQL中一定有用,对我来说似乎还可以。

似乎是,如果我打开该过程,然后再次保存它,然后调用该过程,则错误不存在。但是第二次运行该程序,而在我收到错误后,所有其他时间都运行。

有什么建议吗?

0 个答案:

没有答案