Erklären Fehler-handler nicht gültig in MySQL?

Ich bin versucht zu schreiben, dass meine erste gespeicherte Prozedur, die verwendet wird, einen Fehler-handler, aber Es scheint nicht zu akzeptieren, meine syntax. Hier ist, was ich verwende:

DELIMITER //

CREATE PROCEDURE min_list_valid (OUT pass CHAR
                                ,OUT errs VARCHAR(50)
                                ,IN `@list_id` INT
                                ,IN `@min_input` INT)
BEGIN
    BEGIN
        DROP TABLE IF EXISTS `errors_table`;
        CREATE TEMPORARY TABLE `errors_table`(error VARCHAR(30))ENGINE=MEMORY;
    END;

    BEGIN
        DECLARE error_holder VARCHAR(30);
        DECLARE error_checker VARCHAR(30);
        SET error_checker = 0;

        DECLARE CONTINUE HANDLER FOR SQLSTATE, SQLEXCEPTION
        BEGIN
            SELECT 'The user input is less than the minimum for this list' INTO error_holder;
            SELECT error_holder INTO `errors_table`;
            SET error_checker = 1;
        END;

        SELECT      IF(MAX(CAST(`peg_num` AS UNSIGNED))<`@min_input`,'pass',NULL) AS `key`
        FROM        `game_lists`
        WHERE       `list_id` = `@list_id`
        INTO        pass;

        IF error_checker <> 0 THEN
            SELECT * FROM `errors_table`
        END IF;
    END;
END; //

Es gibt mir wieder die Fehlermeldung:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE CONTINUE HANDLER FOR SQLSTATE, SQLEXCEPTION BEGIN ' at line 16

Aber das ist seltsam, es sagt mir das erklären, das falsch ist aber die Zeile in der der Fehler ist in Zeile 16 (die mit SET error_checker = 0). Ich glaube, ich bin nach der richtigen syntax, so... was ist falsch?

Was diese gespeicherte Prozedur nicht einfach ist, wählen Sie den maximalen Wert aus einer Liste auswählen, und alles andere ist mir gerade zu schaffen versucht, einen Fehler-handler, und eine Fehler-Tabelle zu speichern, der Fehler generiert hat. Ich wollte versuchen, eine einfache Funktionalität, die erstmals mit der "vollen" Fehlerbehandlung es gibt also nicht zu viele debug-Punkte.

Meine MySQL-version ist 5.6.14 - MySQL Community Server (GPL)

InformationsquelleAutor markovchain | 2014-08-03

Schreibe einen Kommentar