2012-03-25 12 views
0

Ich versuche, eine Cursor-Schleife in MySQL zu verwenden, aber es funktioniert nicht. Ich habe das Beispiel von http://dev.mysql.com/doc/refman/5.0/en/cursors.html im Wesentlichen kopiert, außer dass ich eine Funktion anstelle einer Prozedur verwende. Spielt das eine Rolle?MySQL-Cursor: unbekannte Spalte "done" in "Feldliste"

Wenn ich versuche, die Funktion auszuführen - wählen Sie xxx() von Dual - ich bekomme einen Fehler: unbekannte Spalte "fertig" in "Feldliste". Was ist zu tun?

delimiter $$ 
create function xxx() 
returns int deterministic 
    begin 
     DECLARE a INT; 
     DECLARE cur1 CURSOR FOR SELECT id FROM my_table; 

     OPEN cur1; 

     read_loop: LOOP 
      FETCH cur1 INTO a; 
      IF done THEN 
       LEAVE read_loop; 
      END IF; 
     END LOOP; 
     CLOSE cur1; 
     return 1;  
end$$ 
delimiter ; 

Antwort

3

Sie haben done nicht deklariert. DECLARE done INT DEFAULT FALSE; und am Ende DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

+0

Das tat es, danke. Und es war genau hier im Beispiel auch. – user984003

+0

ja ich nehme aus dem beispiel – safarov

Verwandte Themen