Heim >Datenbank >MySQL-Tutorial >Was ist der Unterschied zwischen gespeicherten MySQL-Prozeduren und gespeicherten Funktionen?
Unterschied: 1. Gespeicherte Funktionen haben viele Einschränkungen, während gespeicherte Prozeduren relativ wenige Einschränkungen haben. 2. Gespeicherte Funktionen geben einen und nur einen Ergebniswert an den Aufrufer zurück, während gespeicherte Prozeduren einen oder mehrere Ergebnissätze zurückgeben. Es gibt drei Parametertypen für gespeicherte Prozeduren und nur einen Parametertyp für gespeicherte Funktionen.
Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.
Was ist eine gespeicherte Prozedur?
Eine gespeicherte Prozedur ist eine Reihe von SQL-Anweisungen, die zum Ausführen bestimmter Funktionen in großen Datenbanksystemen verwendet werden. Sie müssen nach der ersten Kompilierung nicht erneut kompiliert werden Der Benutzer gibt den Namen der gespeicherten Prozedur und Parameter (sofern die gespeicherte Prozedur über Parameter verfügt) an, um sie auszuführen. Gespeicherte Prozeduren sind ein wichtiges Objekt in der Datenbank, und jede gut gestaltete Datenbankanwendung sollte gespeicherte Prozeduren verwenden.
Vorteile:
(1) Wiederverwendung: Gespeicherte Prozeduren können wiederverwendet werden, was die Arbeitsbelastung der Entwickler verringern kann.
(2) Effizienz verbessern: Die gespeicherte Prozedur wird bei der ersten Verwendung kompiliert. Nach der Kompilierung muss sie nicht erneut kompiliert werden, was die Effizienz verbessert.
(3) Reduzieren Sie den Netzwerkverkehr: Die gespeicherte Prozedur befindet sich auf dem Server. Beim Aufruf müssen Sie nur den Namen und die Parameter der gespeicherten Prozedur übergeben, wodurch die über das Netzwerk übertragene Datenmenge reduziert wird.
(4) Sicherheit: Parametrisierte gespeicherte Prozeduren können die SQL-Injection verhindern und auf gespeicherte Prozeduren können Berechtigungen zum Gewähren, Verweigern und Widerrufen angewendet werden.
Nachteile:
(1) Debugging-Probleme
(2) Schlechte Portabilität
(3) Schlechte Wartbarkeit
Code:
CREATE DEFINER=`root`@`%` PROCEDURE `getName`(IN `uid` int,OUT my_uname VARCHAR(255)) BEGIN #Routine body goes here... select admin_name into my_uname from admin_user where id=uid; select my_uname; END
Was ist eine gespeicherte Funktion?
Eine gespeicherte Funktion ist eine Reihe gespeicherter Prozeduren mit einem Funktionsnamen und Parametern und gibt eine Ergebnismenge zurück. Gespeicherte Funktionen haben eine ähnliche Struktur wie gespeicherte Prozeduren, müssen jedoch über eine Rückgabeklausel verfügen, um Ergebnisse zurückzugeben.
Code:
CREATE DEFINER=`root`@`%` FUNCTION `queryChildrenAreaInfo`(areaId INT) RETURNS varchar(4000) CHARSET utf8 BEGIN DECLARE sTemp VARCHAR(4000); DECLARE sTempChd VARCHAR(4000); SET sTemp='$'; SET sTempChd = CAST(areaId AS CHAR); WHILE sTempChd IS NOT NULL DO SET sTemp= CONCAT(sTemp,',',sTempChd); SELECT GROUP_CONCAT(id) INTO sTempChd FROM personal_dept WHERE FIND_IN_SET(dept_parentId,sTempChd)>0; END WHILE; RETURN sTemp; END
Der Unterschied zwischen gespeicherten Prozeduren und gespeicherten Funktionen
1. Übersicht
Gespeicherte Prozeduren und gespeicherte Funktionen werden gemeinsam als gespeicherte Routinen bezeichnet. Die Syntax der beiden ist sehr ähnlich, sie haben jedoch unterschiedliche Inhalte.
Speicherfunktionen unterliegen vielen Einschränkungen. Beispielsweise können keine temporären Tabellen verwendet werden, sondern nur Tabellenvariablen. Es gibt auch einige Funktionen, die nicht verfügbar sind usw.
Die Einschränkungen für gespeicherte Prozeduren sind relativ gering und die zu implementierenden Funktionen sind komplexer.
2. Unterschied im Rückgabewert
Die Speicherfunktion gibt nur einen Ergebniswert an den Aufrufer zurück.
Eine gespeicherte Prozedur gibt eine oder mehrere Ergebnismengen zurück (Funktionen können dies nicht), oder einfach nur, um einen Effekt oder eine Aktion zu erzielen, ohne ein Ergebnis zurückzugeben.
3. Verschiedene Aufrufmethoden
Gespeicherte Funktionen sind in SQL eingebettet und können in select aufgerufen werden, genau wie integrierte Funktionen wie cos() und sin().
4. Unterschiede in den Parametern
Die Parametertypen gespeicherter Funktionen ähneln IN-Parametern
Es gibt drei Parametertypen gespeicherter Prozeduren: IN-Parameter, OUT-Parameter, INOUT-Parameter
Eine gespeicherte Prozedur ist eine Sammlung benutzerdefinierter SQL-Anweisungen. Benutzer können gespeicherte Prozeduren aufrufen, um Aufgaben für bestimmte Tabellen oder andere Objekte zu entwerfen.in: Es werden nur Daten übertragen von außen nach innen Verwendung (Wertübertragung), die ein numerischer Wert oder eine Variable
out sein kann: nur für interne Verwendung des Prozesses zulässig (es werden keine externen Daten verwendet), für externe Verwendung (Referenzübertragung: externe Daten). (wird zuerst gelöscht, bevor das Interne eingegeben wird). Kann nur Variablen sein.
Eine Funktion ist normalerweise eine von der Datenbank definierte Methode, die Parameter empfängt und einen Wert eines bestimmten Typs zurückgibt und keine bestimmte Benutzertabelle umfasst.
【Verwandte Empfehlung:
MySQL-Video-TutorialDas obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen gespeicherten MySQL-Prozeduren und gespeicherten Funktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!