2016-08-20 2 views
3

Ich versuche, meinen ersten Cursor in MySQL zu machen, und ich erhalte einen Fehler. Es heißt falscher Integer-Wert. Ich dachte, das würde den Wert in der ersten Zeile aus der Spalte customer_Id übernehmen und in der Variablen IdValue speichern. Wie kann ich das richtig programmieren und diesen Fehler beheben?Cursor falsche Ganzzahl Wert Fehler

DELIMITER $$ 

CREATE PROCEDURE CursorProcedure() 
BEGIN 
DECLARE IdValue int; 
DECLARE myCursor CURSOR FOR 
SELECT customer_Id FROM customers; 

OPEN myCursor; 
FETCH myCursor INTO IdValue; 
CLOSE myCursor; 
SELECT IdValue; 
END$$ 
DELIMITER ; 

Antwort

2
DROP PROCEDURE IF EXISTS CursorProcedure; 
DELIMITER $$ 
CREATE PROCEDURE CursorProcedure() 
BEGIN 
    DECLARE done INT DEFAULT FALSE; 
    DECLARE IdValue int; 
    DECLARE myCursor CURSOR FOR SELECT customer_Id FROM customers; 
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; 

    OPEN myCursor; 
    read_loop: LOOP 
     FETCH myCursor INTO IdValue; 
     IF done THEN 
      LEAVE read_loop; 
     END IF; 
     -- 
     -- YOU ARE IN YOUR READ LOOP 
     -- DO SOMETHING WITH IT HERE 
     -- 
    END LOOP; 
    CLOSE myCursor; 
END$$ 
DELIMITER ; 

Aber in dem „etwas mit ihm tun hier“, hat eine SELECT auf es nicht tun, weil es mehrere Ergebnismengen generieren. Mach etwas Sinnvolles.

Handbuchseite auf Cursors.

Nebenbei sind Cursor selten Ihre Freunde. Sie sind extrem langsam. Verwenden Sie sie nur in schweren Notfällen.

+0

Ich habe 'Set IdValue = IdValue; INSERT IN Kunden (newCol) Werte (IdValue); ' für den Schleifenkörper. Wenn ich es ausführe, fügt es die Werte zufällig ein und beginnt in einer Reihe 5. Warum sollte das sein? – TickleMonster

+0

Bitte besuchen Sie mich [hier] (http://chat.stackoverflow.com/rooms/95290/campaigns) im Chat – Drew