Problem:
Sie haben eine gespeicherte Prozedur das muss keine Werte zurückgeben. Es wird erfolgreich ausgeführt, gibt jedoch nach Abschluss eine Fehlermeldung aus:
Error: No data - zero rows fetched, selected, or processed
Lösung:
Die Fehlermeldung wird angezeigt, weil die gespeicherte Prozedur den Fall nicht explizit behandelt wobei von keiner seiner Operationen Daten zurückgegeben werden. Um dieses Problem zu beheben, können Sie eine DECLARE CONTINUE HANDLER-Anweisung einfügen, um den NOT FOUND-Fehler zu ignorieren:
<code class="sql">DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;</code>
Erklärung:
Die DECLARE CONTINUE HANDLER-Anweisung weist MySQL dazu an Ignorieren Sie den Fehler „NICHT GEFUNDEN“ und fahren Sie mit der Ausführung der gespeicherten Prozedur fort. In Ihrem speziellen Fall sollte diese Anweisung nach der Schleife hinzugefügt werden, die die Zeilen in der Tabelle „customer_tbl“ durchläuft:
<code class="sql">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; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;</code>
Zusätzlicher Hinweis:
Für MySQL-Version 5.5.13 und höher können Sie am Ende der gespeicherten Prozedur auch eine „Dummy“-Anweisung hinzufügen, um die Warnung zu löschen:
<code class="sql">SELECT name INTO l_name FROM customer_tbl LIMIT 1;</code>
Diese Anweisung ist erfolgreich und beinhaltet keine Daten, wodurch die Warnung effektiv gelöscht wird Warnmeldung.
Das obige ist der detaillierte Inhalt von**Wie behebe ich „Fehler 1329: Keine Daten' in gespeicherten Prozeduren, wenn kein Ergebnis erwartet wird?**. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!