Heim > Fragen und Antworten > Hauptteil
Bitte helfen Sie mir herauszufinden, warum der Fehler gemeldet wird. Dies ist das erste Mal, dass ich diese Art von gespeicherter Prozedur schreibe:
delimiter $$
create procedure mydb()
begin
declare dbname varchar(50);
declare stop int default 0 ;
declare curcursor for (select name from name); //Die Namenstabelle speichert den Namen der Datenbank
declare CONTINUE HANDLER FOR SQLSTATE '02000' SET stop = null;
open cur;
fetch cur into dbname; // Durchlaufen Sie den Namen der Datenbank
while (stop is not null) do
begin
declare name varchar(200);
declare stop1 int default 0;
declare cur1 cursor for (select prounit_name from dbname.prounit); //获取prounit表中prounit_name字段内容
declare CONTINUE HANDLER FOR SQLSTATE '02000' SET stop1 = null;
open cur1;
fetch cur1 into name;
while ( stop1 is not null) do
update prounit set name='abc';
fetch cur1 into name;
end while;
close cur1;
end ;
fetch cur into dbname;
end while;
close cur;
end ;
delimiter $$
Fehler beim Ausführen der gespeicherten Prozedur: ERROR 1146 (42S02): Tabelle „dbname.prounit“ existiert nicht
warum?????
迷茫2017-05-31 10:39:32
说几个语法问题吧.
while ( stop is not null) do
中的stop
应该游标dbname
才对,对游标进行判断.不然对stop没有引用过
最后一个end;
,前面你定义了delimiter $$`以`$$
为结束符,应该改为end$$
,最后不要忘了结尾改成delimiter ;