Gespeicherte Prozedur erstellen
Um mit der Erstellung einer gespeicherten Prozedur (Stored Procedure, SP) fortfahren zu können, müssen wir zunächst über die Benutzerberechtigungen CREATE ROUTINE und ALTER ROUTINE verfügen . Für den Benutzer, mit dem wir sie in der Datenbank erstellen, ist jedoch auch die EXECUTE- Berechtigung erforderlich wird automatisch dem Ersteller eines SP zugewiesen.
Um einen SP zu erstellen, gehen Sie zuerst in das Abfragefeld. In der Regel beenden Sie eine SQL-Anweisung mit dem Semikolon ( In diesem Fall werden wir diesen Begrenzer für das folgende (//) ändern, da der SP eine große SQL-Anweisung ist und mehrere enthält, sodass wir den Inhalt nicht mit dem Semikolon abschließen können (
Sobald dies erledigt ist, geben wir unseren Code in das Abfragefeld ein. Sehen wir uns ein Codebeispiel an:
CREATE PROCEDURE `add_page` (IN param_isbn VARCHAR (25), IN param_pages INT, OUT param_message VARCHAR (100) BEGINNEN WENN param_pages> 100 DANN SET param_message = 'die Anzahl der Seiten ist zu groß'; ELSE UPDATE Buch SET page_count = page_count + param_pages WO isbn = param_isbn; SET param_message = 'Erfolg'; END IF; ENDE //
Wie wir sehen, ist es nicht sehr schwierig herauszufinden, was dieser SP tut . Die erste Zeile ist recht einfach. Wir definieren einfach die Eingabe- und Ausgabeparameter des SP. Beginnen Sie dann mit unserem Block und setzen Sie eine IF ELSE-Bedingung, unter der wir jeden der Parameter von auswerten Eingabe, so dass wir bei jeder Bedingung, die wir ausführen, die entsprechenden Blöcke unseres SP mit ENDIF und END schließen und mit // enden, das ist unser benutzerdefiniertes Trennzeichen.
Testen der gespeicherten Prozedur
Sobald dies definiert ist, werden wir die Tests unseres SP durchführen . Dazu werden wir einige Elemente sehen, die wir nicht verwendet haben. Schauen wir uns zuerst den Code und dann die Erklärung an:
rufen Sie add_page (‘1-234567-22-0’, 4, @message) auf;
SELECT @message;
Mal sehen, wir verwenden den CALL , um unseren SP aufzurufen, dann übergeben wir zwei Parameter, auf die der SP gewartet hat, und schließlich verwenden wir eine MySQL-Variable, um die Antwort zu erhalten. In der zweiten Zeile überprüfen wir einfach diese Variable, um ihren Wert zu erhalten. wie wir sehen, ist es ziemlich einfach, damit zu arbeiten.
Manipulieren der gespeicherten Prozedur
Der SP ist in der Datenbank gespeichert, jedoch nicht an eine bestimmte Tabelle gebunden. Um darauf zuzugreifen, rufen wir zunächst die Datenbankansicht in phpMyAdmin auf. Auf der Strukturseite befindet sich ein Abschnitt namens Routinen .
Wenn wir auf das Bearbeitungssymbol klicken, sehen wir, dass der SP-Code, der uns anzeigt, etwas anderes ist als der unsere. Sehen wir uns an, wie er aussieht:
DROP-VERFAHREN `add_page` // CREATE DEFINER = `marc` @`% `PROCEDURE` add_page` (IN param_isbn VARCHAR (25), IN param_pages INT, OUT param_message VARCHAR (100)) BEGINNEN WENN param_pages> 100 DANN SET param_message = 'die Anzahl der Seiten ist zu groß'; ELSE UPDATE Buch SET page_count = page_count + param_pages WO isbn = param_isbn; SET param_message = 'Erfolg'; END IF;
Wir können den SP nicht ändern. Wenn wir also versuchen, ihn zu bearbeiten, ist der erste Befehl der DROP des SP. Auf diese Weise entfernen wir ihn, um ihn neu zu erstellen. In den folgenden Zeilen wird auch eine Zeile generiert, in der der Benutzer, der der Schöpfer des SP ist; Sobald die Änderungen durch Klicken auf Los vorgenommen wurden , erstellen wir unseren modifizierten SP und speichern ihn in der Datenbank.
Hiermit schließen wir das Lernprogramm ab, da die gespeicherten Prozeduren sehr nützlich sind, um Anweisungsblöcke zu speichern, die wir jederzeit aufrufen können, wodurch wir die Leistung der Unterroutinen in der Datenbank erhalten.