„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie unterdrücke ich „Fehler 1329: Keine Daten“ in gespeicherten Prozeduren, die keine Daten zurückgeben?

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

Veröffentlicht am 02.11.2024
Durchsuche:359

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 oft 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 ändern, um dies explizit anzugeben Es werden keine Daten zurückgegeben. Dies kann erreicht werden, indem am Anfang der Prozedur die folgende Zeile hinzugefügt wird:

READS SQL DATA

Diese Zeile informiert die Datenbank darüber, dass die Prozedur nur aus Tabellen liest und nicht Gibt alle Zeilen zurück.

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.

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

Durch Hinzufügen dieser Zeile weisen wir die an Datenbank, um 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.

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

SELECT name INTO l_name FROM customer_tbl LIMIT 1;

Durch Befolgen dieser Ansätze können Entwickler die Meldung „Fehler 1329“ unterdrücken Gespeicherte Prozeduren, die keine Daten zurückgeben und so eine reibungslosere Ausführung ohne unnötige Fehlermeldungen gewährleisten.

Neuestes Tutorial Mehr>

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