0
當我要聲明此過程不聲明 此代碼不會報告任何報告
我不知道這是我想使用此過程中的問題
MySQL的 - 程序運行失敗不是錯誤
在Solr的索引,但此過程 不執行
DELIMITER $$
create procedure getAllStuff()
begin
declare category_id int(10);
declare category_name varchar default NULL;
declare stateCommands varchar(255) default NULL;
declare leafCats INT(10) default NULL;
declare tableName varchar(255) default NULL;
declare finished int(10) default 0;
declare leafCats_cursor CURSOR FOR select id,name from category where rgt=lft+1;
declare CONTINUE handler FOR NOT FOUND set finished=1;
create temporary table IF NOT EXISTS leafCats (
id int null primary key auto_increment,
category_id int,
tableName varchar(255)
);
open leafCats_cursor;
set_leafCats: LOOP
fetch leafCats_cursor into category_id,category_name;
if finished =1 then
leave set_leafCats
endif
set tableName=replace(catgeory_name,' ','_');
set tableName = concat('stuff_',tableName);
insert into leafCats values (NULL,category_id,tableName);
end loop set_leafCats;
close leafCats_cursor;
declare cats_cursor CURSOR FOR select category_id,category_name from leafCats;
open cats_cursor;
get_cats: LOOP
fetch cats_cursor into category_id,category_name;
if finished =1 then
leave set_leafCats;
endif;
if stateCommands != NULL then
set stateCommands=concat(sql,'select t.id as id,t.name,t.overall,c.id as
category_id from '.tableName .' t join category c where c.id=' . category_id);
else
set stateCommands=concat(sql,'union all select t.id asid,t.name,t.overall,c.id as
category_id from '.tableName .' t join category c where c.id=' . category_id);
end if;
end loop get_cats;
close cats_cursor;
PREPARE s1 FROM stateCommands;
EXECUTE s1;
DEALLOCATE PREPARE s1;
end @@
DELIMITER ;
,當我改變分隔符@@這個錯誤apear
錯誤1064(42000):您的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在「默認NULL; declare stateCommands varchar(255)default NULL; 在第4行聲明瞭leafCats' mysql> DELIMITER;
檢查語法錯誤。所有的DECLARE語句都必須在BEGIN..END子句的開頭。 – Devart
就沒有錯誤 - > DELIMITER; - > DELIMITER; –
存在語法錯誤。添加更多關於客戶的信息,顯示錯誤信息。 – Devart