Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie unterdrücke ich „Fehler 1329: Keine Daten' in gespeicherten Prozeduren, die keine Daten zurückgeben?

Patricia Arquette
Freigeben: 2024-10-26 15:46:30
Original
445 Leute haben es durchsucht

How to Suppress

Das „Fehler 1329: Keine Daten“-Dilemma überwinden

Viele Entwickler stoßen auf den frustrierenden „Fehler 1329: Keine Daten – null Zeilen abgerufen, ausgewählt oder verarbeitet“, wenn Ausführen gespeicherter Prozeduren. Allerdings tritt dieser Fehler häufig auch dann auf, wenn die Prozedur ordnungsgemäß funktioniert, was die Frage aufwirft, wie diese unnötige Meldung unterdrückt werden kann.

Eine mögliche Lösung liegt in der gespeicherten Prozedur selbst. Standardmäßig wird von gespeicherten Prozeduren erwartet, dass sie eine Ergebnismenge zurückgeben. Wenn die Prozedur jedoch Vorgänge ausführt, die keine Daten liefern (z. B. Datenmanipulation oder Datensatzaktualisierungen), wird die Fehlermeldung ausgelöst.

Um dieses Problem zu beheben, können wir die gespeicherte Prozedur so ändern, dass sie dies explizit anzeigt Es werden keine Daten zurückgegeben. Dies kann erreicht werden, indem am Anfang der Prozedur die folgende Zeile hinzugefügt wird:

<code class="sql">READS SQL DATA</code>
Nach dem Login kopieren

Diese Zeile informiert die Datenbank darüber, dass die Prozedur nur aus Tabellen liest und keine Zeilen zurückgibt.

Ein anderer Ansatz besteht darin, die NOT FOUND-Ausnahme innerhalb der Prozedur zu behandeln. Wenn ein Cursor zum Abrufen von Zeilen aus einer Tabelle verwendet wird, kann es zu einem Szenario kommen, in dem keine weiteren Zeilen zum Abrufen vorhanden sind. Dies führt dazu, dass der Cursor eine NOT FOUND-Ausnahme auslöst. Indem wir diese Ausnahme abfangen und ein Flag setzen, können wir die Fehlermeldung vermeiden.

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

Durch das Hinzufügen dieser Zeile weisen wir die Datenbank an, das Fertig-Flag auf 1 zu setzen, wenn der Cursor auf die NOT FOUND-Ausnahme stößt. Dieses Flag kann dann verwendet werden, um die Cursorschleife zu verlassen und den Vorgang abzuschließen, ohne die Fehlermeldung auszulösen.

Schließlich besteht eine weitere Problemumgehung darin, eine zusätzliche Dummy-Abfrage auszuführen, die aus einer Tabelle liest und erfolgreich ist. Dadurch wird die Warnung auf MySQL 5.5.13 gelöscht.

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

Durch die Befolgung dieser Ansätze können Entwickler die Meldung „Fehler 1329“ für gespeicherte Prozeduren unterdrücken, die keine Daten zurückgeben, und so eine reibungslosere Ausführung ohne Unnötiges gewährleisten Fehlermeldungen.

Das obige ist der detaillierte Inhalt vonWie unterdrücke ich „Fehler 1329: Keine Daten' in gespeicherten Prozeduren, die keine Daten zurückgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!