Veuillez m'aider à découvrir pourquoi l'erreur est signalée. C'est la première fois que j'écris ce type de procédure stockée :
delimiter $$
create procedure mydb()
begin
declare dbname varchar(50);
declare stop int default 0. ;
déclarer le curseur pour (sélectionner le nom à partir du nom); //La table de noms stocke le nom de la base de données
déclarer CONTINUE HANDLER FOR SQLSTATE '02000' SET stop = null;
ouvrir le cur;
récupérer le cur dans le nom de base de données; Parcourez le nom de la base de données
while (stop n'est pas nul) 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 ;
récupérer cur dans dbname;
end while;
close cur;
end ;
delimiter $$
Erreur lors de l'exécution de la procédure stockée : ERREUR 1146 (42S02) : La table 'dbname.prounit' n'existe pas
pourquoi ?????
L'invite est évidente, la table n'existe pas
declare dbname varchar(50);
Le nom est écrasé ?Parlons de quelques problèmes de grammaire
.while (stop is not null) do
Lestop
doit être le curseurdbname
et juger le curseur. Sinon il n'y a aucune référence pour arrêterwhile ( stop is not null) do
中的stop
应该游标dbname
才对,对游标进行判断.不然对stop没有引用过最后一个
end;
,前面你定义了delimiter $$`以`$$
为结束符,应该改为end$$
,最后不要忘了结尾改成delimiter ;
end;
, avant de définir ledelimiter $$` avec `$$
comme caractère de fin, il doit être remplacé parfin $$
, enfin n'oubliez pas de changer la fin endelimiter ;
#### ##