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 mit einer CONTINUE HANDLER-Anweisung erreicht werden.
Betrachten Sie die folgende gespeicherte Prozedur „testing_proc“:
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
Wenn dieser Vorgang ohne Daten in der Tabelle customer_tbl ausgeführt wird, wird die Warnung „Fehler 1329“ ausgelöst. Um dies zu verhindern, können wir die folgende CONTINUE HANDLER-Anweisung am Ende der Prozedur hinzufügen:
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
Diese Anweisung weist MySQL an Setzen Sie die Variable done auf 1, wenn keine Zeilen gefunden werden. Dadurch wird die Cursorschleife beendet und der Fehler kann nicht auftreten.
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:
SELECT name INTO l_name FROM customer_tbl LIMIT 1;
Diese Anweisung stellt sicher, dass eine Zeile abgerufen wird und löscht die Warnung.
Durch ordnungsgemäße Handhabung Durch die Bedingung „NOT FOUND“ oder das Hinzufügen einer Dummy-Anweisung kann die Warnung „Fehler 1329“ in gespeicherten Prozeduren beseitigt werden, die keine Daten zurückgeben.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3