2016-10-25 4 views
0

Ich versuchte, die SP mit dem Code aus der URL unten zu schaffen, ist es jedoch viele Syntaxfehler angezeigt werden. https://dev.mysql.com/doc/refman/5.7/en/cursors.htmlUnerwartete MYSQL Syntaxfehler

CREATE PROCEDURE curdemo() 
BEGIN 
    DECLARE done INT DEFAULT FALSE; 
    DECLARE a CHAR(16); 
    DECLARE b, c INT; 
    DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1; 
    DECLARE cur2 CURSOR FOR SELECT i FROM test.t2; 
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; 

    OPEN cur1; 
    OPEN cur2; 

    read_loop: LOOP 
    FETCH cur1 INTO a, b; 
    FETCH cur2 INTO c; 
    IF done THEN 
     LEAVE read_loop; 
    END IF; 
    IF b < c THEN 
     INSERT INTO test.t3 VALUES (a,b); 
    ELSE 
     INSERT INTO test.t3 VALUES (a,c); 
    END IF; 
    END LOOP; 

    CLOSE cur1; 
    CLOSE cur2; 
END; 

enter image description here

enter image description here

+0

INT STANDARD FALSCH; Dies ist der Grund für den Syntaxfehler Ändern Sie dies zu INT DEFAULT 0; – rocks

+0

Ändern Sie das Trennzeichen vor Ihrer Prozedur. Zum Beispiel so: 'delimiter ||' –

+0

@ ocks, siehe mein zweites Bild. – Jason

Antwort

1

Ihre Begrenzer zuerst ändern

delimiter || 
CREATE PROCEDURE curdemo() 
BEGIN 
... 
END 
|| 
delimiter ; 

Ansonsten endet die DB-Engine denkt Ihr Verfahren Definitionen bei der ersten ;, die sie unvollständig machen würde.

+0

groß, erfolgreich nach dem Trennzeichen || hinzufügen. – Jason

Verwandte Themen