Heim > Datenbank > MySQL-Tutorial > Detaillierte Erläuterung der Ergebnismenge gespeicherter MySQL-Prozeduren

Detaillierte Erläuterung der Ergebnismenge gespeicherter MySQL-Prozeduren

PHPz
Freigeben: 2023-04-21 11:45:41
Original
2877 Leute haben es durchsucht

Gespeicherte MySQL-Prozeduren sind eine Reihe von SQL-Anweisungen, die kompiliert und in der Datenbank gespeichert werden und wiederholt aufgerufen werden können. Gespeicherte Prozeduren können Parameter akzeptieren, eine Reihe von Vorgängen ausführen und die Ergebnisse auf verschiedene Arten zurückgeben. In diesem Artikel wird hauptsächlich die Ergebnismenge gespeicherter MySQL-Prozeduren vorgestellt.

1. Die Ergebnismenge der gespeicherten MySQL-Prozedur

Die Ergebnismenge der gespeicherten MySQL-Prozedur kann auf eine der folgenden Arten zurückgegeben werden:

  1. RETURN-Anweisung

Die gespeicherte Prozedur kann die RETURN-Anweisung verwenden, um einen Wert zurückzugeben , und dieser Wert kann eine ganze Zahl, Gleitkommazahlen, Datumsangaben, Uhrzeiten, Zeichenfolgen usw. sein. Wenn die gespeicherte Prozedur keine Ergebnisse zurückgibt, können Sie die Ausführung der gespeicherten Prozedur mit der RETURN-Anweisung beenden.

Zum Beispiel gibt die folgende gespeicherte Prozedur das Produkt zweier Eingabeparameter zurück:

CREATE PROCEDURE myProc(IN a INT, IN b INT)
BEGIN
    DECLARE result INT;
    SET result = a * b;
    RETURN result;
END;
Nach dem Login kopieren
  1. OUT-Parameter

Eine gespeicherte Prozedur kann OUT-Parameter verwenden, um einen oder mehrere Werte zurückzugeben. OUT-Parameter müssen in der Parameterliste der gespeicherten Prozedur deklariert und innerhalb der gespeicherten Prozedur zugewiesen werden. Wenn die gespeicherte Prozedur endet, kann der Aufrufer diese Werte abrufen.

Zum Beispiel gibt die folgende gespeicherte Prozedur die Summe und Differenz zweier Eingabeparameter zurück:

CREATE PROCEDURE myProc(IN a INT, IN b INT, OUT sum INT, OUT difference INT)
BEGIN
    SET sum = a + b;
    SET difference = a - b;
END;
Nach dem Login kopieren
  1. SELECT-Anweisung

Gespeicherte Prozeduren können die SELECT-Anweisung verwenden, um eine oder mehrere Ergebnismengen zurückzugeben. Die Ergebnismenge kann eine oder mehrere Datenzeilen enthalten, wobei jede Zeile aus einer Reihe von Feldern besteht.

Zum Beispiel gibt die folgende gespeicherte Prozedur alle Mitarbeiterinformationen in einer Mitarbeitertabelle zurück:

CREATE PROCEDURE myProc()
BEGIN
    SELECT * FROM Employee;
END;
Nach dem Login kopieren
  1. SET-Anweisung

Die gespeicherte Prozedur kann die SET-Anweisung verwenden, um eine Benutzervariable zurückzugeben. Benutzervariablen können jede Art von Wert speichern, z. B. Ganzzahlen, Gleitkommazahlen, Datumsangaben, Zeichenfolgen usw.

Zum Beispiel gibt die folgende gespeicherte Prozedur den Namen des Mitarbeiters in einer Mitarbeitertabelle zurück:

CREATE PROCEDURE myProc(IN employeeID INT, OUT employeeName VARCHAR(255))
BEGIN
    SELECT name INTO @employeeName FROM Employee WHERE ID = employeeID;
    SET employeeName = @employeeName;
END;
Nach dem Login kopieren

2. Wie gespeicherte MySQL-Prozeduren Ergebnismengen verarbeiten

Gespeicherte Prozeduren können die folgenden Methoden zur Verarbeitung von Ergebnismengen verwenden:

  1. Loop

Speicher Eine Prozedur kann eine Schleife verwenden, um jede Datenzeile im Ergebnissatz zu durchlaufen und die Daten zu verarbeiten.

Zum Beispiel gibt die folgende gespeicherte Prozedur alle Mitarbeiternamen in einer Mitarbeitertabelle zurück:

CREATE PROCEDURE myProc()
BEGIN
    DECLARE employeeName VARCHAR(255);
    DECLARE done INT DEFAULT FALSE;
    DECLARE cur CURSOR FOR SELECT name FROM Employee;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    
    OPEN cur;
    
    get_employee: LOOP
        FETCH cur INTO employeeName;
        
        IF done THEN
            LEAVE get_employee;
        END IF;
        
        SELECT employeeName;
    END LOOP;
    
    CLOSE cur;
END;
Nach dem Login kopieren
  1. Cursor

Die gespeicherte Prozedur kann einen Cursor verwenden, um jede Datenzeile im Ergebnissatz zu durchlaufen und die Daten zu verarbeiten.

Zum Beispiel gibt die folgende gespeicherte Prozedur alle Mitarbeiternamen in einer Mitarbeitertabelle zurück:

CREATE PROCEDURE myProc()
BEGIN
    DECLARE employeeName VARCHAR(255);
    DECLARE cur CURSOR FOR SELECT name FROM Employee;
    
    OPEN cur;
    
    get_employee: LOOP
        FETCH cur INTO employeeName;
        
        IF done THEN
            LEAVE get_employee;
        END IF;
        
        SELECT employeeName;
    END LOOP;
    
    CLOSE cur;
END;
Nach dem Login kopieren
  1. Unterabfrage

Gespeicherte Prozeduren können Unterabfragen verwenden, um Zeilen- und Spaltendaten im Ergebnissatz zu verarbeiten. Unterabfragen können die Ergebnismenge einer gespeicherten Prozedur mit anderen Abfragen kombinieren.

Zum Beispiel gibt die folgende gespeicherte Prozedur alle Mitarbeiterinformationen in einer Mitarbeitertabelle zurück:

CREATE PROCEDURE myProc()
BEGIN
    SELECT *
    FROM Employee
    WHERE departmentID = (
        SELECT ID FROM Department WHERE name = 'Sales'
    );
END;
Nach dem Login kopieren

3. Optimierung der Ergebnismenge gespeicherter MySQL-Prozeduren

Gespeicherte Prozeduren können die folgenden Techniken verwenden, um die Verarbeitung von Ergebnismengen zu optimieren:

  1. Verwenden Sie Indizes

Gespeicherte Prozeduren können Indizes verwenden, um die Abfrage von Ergebnismengen zu beschleunigen. MySQL unterstützt mehrere Indextypen, einschließlich B-Tree-, Hash- und Volltextindizes.

Zum Beispiel können wir in der folgenden gespeicherten Prozedur das ID-Feld der Employee-Tabelle verwenden, um einen Index zu erstellen:

CREATE INDEX idx_employee ON Employee(ID);
Nach dem Login kopieren
  1. Begrenzen Sie die Anzahl der Ergebnismengen

Die gespeicherte Prozedur kann die LIMIT-Anweisung verwenden, um die zu begrenzen Anzahl der Ergebnismengen. Dies kann die Ausführungszeit und den Speicherbedarf gespeicherter Prozeduren reduzieren.

Zum Beispiel können wir in der folgenden gespeicherten Prozedur die LIMIT-Anweisung verwenden, um die Informationen der ersten 10 Mitarbeiter zurückzugeben:

CREATE PROCEDURE myProc()
BEGIN
    SELECT *
    FROM Employee
    LIMIT 10;
END;
Nach dem Login kopieren
  1. Verwendung einer Speichertabelle

Die gespeicherte Prozedur kann eine Speichertabelle verwenden, um eine temporäre Ergebnissatz. In-Memory-Tabellen sind im Allgemeinen schneller als Festplattentabellen, beanspruchen jedoch mehr Speicherplatz als Festplattentabellen.

Zum Beispiel können wir in der folgenden gespeicherten Prozedur die Speicher-Engine verwenden, um einen temporären Ergebnissatz zu erstellen:

CREATE TEMPORARY TABLE tempEmployee ENGINE=MEMORY
SELECT * FROM Employee;
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Ergebnismenge gespeicherter MySQL-Prozeduren. 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