Heim >Datenbank >MySQL-Tutorial >Wie gehe ich mit „Fehler 1329: Keine Daten – Null Zeilen abgerufen' in gespeicherten MySQL-Prozeduren um?

Wie gehe ich mit „Fehler 1329: Keine Daten – Null Zeilen abgerufen' in gespeicherten MySQL-Prozeduren um?

Barbara Streisand
Barbara StreisandOriginal
2024-10-26 14:29:30962Durchsuche

How to Handle

Keine Datenwarnung in gespeicherten Prozeduren: „Fehler 1329: Keine Zeilen abgerufen, ausgewählt oder verarbeitet“

In der Datenbankprogrammierung gespeicherte Prozeduren werden häufig verwendet, um komplexe Vorgänge zu kapseln und die Datenintegrität sicherzustellen. Allerdings können bei diesen Verfahren manchmal Fehler auftreten oder unerwartete Warnungen ausgegeben werden. Ein häufiges Problem ist die Meldung „Fehler 1329: Keine Daten – null Zeilen abgerufen, ausgewählt oder verarbeitet“.

Diese Warnung wird normalerweise angezeigt, wenn eine gespeicherte Prozedur den Fall, dass keine Daten zurückgegeben werden, nicht explizit behandelt. Um dieses Problem zu beheben, muss die Bedingung „NICHT GEFUNDEN“ ordnungsgemäß behandelt werden. In MySQL kann dies mithilfe einer CONTINUE HANDLER-Anweisung erreicht werden.

Betrachten Sie die folgende gespeicherte Prozedur „testing_proc“:

<code class="sql">CREATE PROCEDURE `testing_proc`()
READS SQL DATA
BEGIN
    DECLARE done INT DEFAULT 0;
    DECLARE l_name VARCHAR(20);
    DECLARE my_cur CURSOR FOR
        SELECT name FROM customer_tbl;
    OPEN my_cur;
        my_cur_loop:
        LOOP FETCH my_cur INTO l_name;
            IF done = 1 THEN
                LEAVE my_cur_loop;
            END IF;
            INSERT INTO names_tbl VALUES(l_name);
        END LOOP my_cur_loop;
    CLOSE my_cur;
END</code>

Wenn diese Prozedur ohne Daten in der Tabelle „customer_tbl“ ausgeführt wird, wird sie ausgelöst die Warnung „Fehler 1329“. Um dies zu verhindern, können wir am Ende der Prozedur die folgende CONTINUE HANDLER-Anweisung hinzufügen:

<code class="sql">DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;</code>

Diese Anweisung weist MySQL an, die Variable done auf 1 zu setzen, wenn keine Zeilen gefunden werden. Dies führt dazu, dass die Cursorschleife beendet wird und der Fehler nicht auftritt.

Alternativ kann man die Warnung auch umgehen, indem man am Ende der Prozedur, die eine Tabelle betrifft und erfolgreich ist, eine „Dummy“-Anweisung hinzufügt, wie zum Beispiel:

<code class="sql">SELECT name INTO l_name FROM customer_tbl LIMIT 1;</code>

Diese Anweisung stellt sicher, dass eine Zeile abgerufen wird und löscht die Warnung.

Durch die ordnungsgemäße Behandlung der Bedingung „NICHT GEFUNDEN“ oder das Hinzufügen einer Dummy-Anweisung kann dies beseitigt werden die Warnung „Fehler 1329“ in gespeicherten Prozeduren, die keine Daten zurückgeben.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit „Fehler 1329: Keine Daten – Null Zeilen abgerufen' in gespeicherten MySQL-Prozeduren um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn