Linux – Fehlermeldung der gespeicherten MySQL-Prozedur beim Aufruf
滿天的星座
滿天的星座 2017-05-31 10:37:32
0
2
714

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?????

滿天的星座
滿天的星座

Antworte allen (2)
淡淡烟草味

提示很明显,表不存在
declare dbname varchar(50);名字覆盖了?

    迷茫

    说几个语法问题吧.

    1. while ( stop is not null) do中的stop应该游标dbname才对,对游标进行判断.不然对stop没有引用过

    2. 最后一个end;,前面你定义了delimiter $$`以`$$为结束符,应该改为end$$,最后不要忘了结尾改成delimiter ;

      Neueste Downloads
      Mehr>
      Web-Effekte
      Quellcode der Website
      Website-Materialien
      Frontend-Vorlage
      Über uns Haftungsausschluss Sitemap
      Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!