Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie gibt die gespeicherte MySQL-Prozedur eine Ergebnismenge zurück (zwei Methoden)?

PHPz
Freigeben: 2023-04-21 10:23:54
Original
4124 Leute haben es durchsucht

Gespeicherte MySQL-Prozeduren sind eine Sammlung vorab geschriebener SQL-Anweisungen, die bei Bedarf aufgerufen und ausgeführt werden können. Gespeicherte Prozeduren werden in der Regel zur Abwicklung komplexer Datenbankvorgänge verwendet, wodurch die Sicherheit und Leistung der Datenbank verbessert und gleichzeitig die Codemenge in der Anwendung reduziert werden kann. Gespeicherte MySQL-Prozeduren können auch Ergebnismengen zurückgeben, um Anwendungsabfragen und statistische Operationen zu erleichtern.

Es gibt zwei Möglichkeiten für gespeicherte MySQL-Prozeduren, Ergebnismengen zurückzugeben: mithilfe von OUT-Parametern und mithilfe von Cursorn. Im Folgenden wird die Verwendung dieser beiden Methoden beschrieben.

1. Verwenden Sie den OUT-Parameter, um die Ergebnismenge zurückzugeben.

Verwenden Sie den OUT-Parameter, um die Abfrageergebnisse in einer oder mehreren Variablen zu speichern, und geben Sie diese Variablen dann als Ausgabeparameter der gespeicherten Prozedur zurück. Diese Methode eignet sich für die Rückgabe kleinerer Ergebnismengen, z. B. eines einzelnen Werts oder einer kleinen Datenmenge.

Hier ist ein Beispiel für die Verwendung des OUT-Parameters zum Zurückgeben von Abfrageergebnissen:

CREATE PROCEDURE `get_total_orders`(OUT total INT)
BEGIN
    SELECT COUNT(*) INTO total FROM orders;
END;
Nach dem Login kopieren

Die oben gespeicherte Prozedur wird verwendet, um die Gesamtzahl der Bestellungen zu berechnen und das Ergebnis im OUT-Parameter namens „total“ zu speichern. Der Beispielcode für die Verwendung dieser gespeicherten Prozedur lautet wie folgt:

SET @total = 0;
CALL get_total_orders(@total);
SELECT @total as total_orders;
Nach dem Login kopieren

In diesem Beispiel definieren Sie zunächst die Variable @total und weisen ihr den Wert 0 zu. Anschließend wird die gespeicherte Prozedur get_total_orders aufgerufen und das Ergebnis im OUT-Parameter @total gespeichert. Fragen Sie abschließend den Wert der Variablen @total ab und geben Sie das Ergebnis aus.

2. Verwenden Sie einen Cursor, um die Ergebnismenge zurückzugeben.

Ein Cursor ist ein Zeiger auf eine Ergebnismenge und kann verwendet werden, um zufällig auf jede Zeile der Ergebnismenge zuzugreifen. Die Verwendung eines Cursors zum Zurückgeben eines Ergebnissatzes eignet sich für die Rückgabe eines größeren Ergebnissatzes oder wenn mehrere Abfragen und Vorgänge erforderlich sind.

Das Folgende ist ein Beispiel für die Verwendung eines Cursors zum Zurückgeben von Abfrageergebnissen:

CREATE PROCEDURE `get_customer_orders`(IN customer_id INT)
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE order_id INT;
    DECLARE order_date DATE;
    DECLARE order_total DECIMAL(10,2);
    DECLARE cur CURSOR FOR SELECT id, order_date, total FROM orders WHERE customer_id = customer_id;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    
    OPEN cur;
    read_loop: LOOP
        FETCH cur INTO order_id, order_date, order_total;
        IF done THEN
            LEAVE read_loop;
        END IF;
        -- 处理每一行数据
    END LOOP;
    CLOSE cur;
END;
Nach dem Login kopieren

Die oben genannte gespeicherte Prozedur wird verwendet, um alle Bestellungen eines bestimmten Kunden abzufragen und die Abfrageergebnisse in einem Cursor zu speichern. Der Teil, der Zeilendaten verarbeitet, ist auskommentiert, und entsprechende Vorgänge können hier entsprechend den Geschäftsanforderungen ausgeführt werden. Der Beispielcode für die Verwendung dieser gespeicherten Prozedur lautet wie folgt:

CALL get_customer_orders(123);
Nach dem Login kopieren

In diesem Beispiel wird die gespeicherte Prozedur get_customer_orders aufgerufen und die Kundennummer 123 als Eingabeparameter übergeben. Die gespeicherte Prozedur fragt alle Bestellungen des Kunden ab und speichert die Ergebnisse im Cursor für nachfolgende Vorgänge.

Zusammenfassung

Gespeicherte MySQL-Prozeduren können Ergebnismengen über OUT-Parameter und Cursor zurückgeben, und Sie können die geeignete Rückgabemethode entsprechend den Geschäftsanforderungen auswählen. Die Verwendung gespeicherter Prozeduren kann die Sicherheit und Leistung der Datenbank verbessern und gleichzeitig die Menge an Anwendungscode reduzieren. Beim Entwerfen und Verwenden gespeicherter Prozeduren sollte auf standardisiertes Schreiben und moderate Verwendung geachtet werden, um eine optimale Datenbankleistung und Anwendungseffizienz zu erreichen.

Das obige ist der detaillierte Inhalt vonWie gibt die gespeicherte MySQL-Prozedur eine Ergebnismenge zurück (zwei Methoden)?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage