Heim >php教程 >PHP开发 >Der Unterschied zwischen gespeicherten Prozeduren und Funktionen in SQL Server

Der Unterschied zwischen gespeicherten Prozeduren und Funktionen in SQL Server

高洛峰
高洛峰Original
2016-12-14 15:28:171685Durchsuche

Es gibt im Wesentlichen keinen Unterschied. Die Funktion hat lediglich die Einschränkung, dass sie nur eine Variable zurückgeben kann. Die gespeicherte Prozedur kann mehrere zurückgeben. Funktionen können in SQL eingebettet und in Select aufgerufen werden, gespeicherte Prozeduren jedoch nicht. Der Kern der Ausführung ist derselbe.

Es gibt viele Einschränkungen für Funktionen. Beispielsweise können keine temporären Tabellen verwendet werden, nur Tabellenvariablen sind nicht verfügbar usw. Die Einschränkungen für gespeicherte Prozeduren sind relativ gering > 1. Im Allgemeinen sind die durch gespeicherte Prozeduren implementierten Funktionen komplexer, während die durch Funktionen implementierten Funktionen gezielter sind.

 2. Gespeicherte Prozeduren können Parameter zurückgeben, während Funktionen nur Werte oder Tabellenobjekte zurückgeben können.

 3. Gespeicherte Prozeduren werden im Allgemeinen als unabhängiger Teil ausgeführt, während Funktionen als Teil einer Abfrageanweisung aufgerufen werden können. Da die Funktion ein Tabellenobjekt zurückgeben kann, kann es sich im FROM-Schlüssel in der Abfrage befinden Aussage hinter den Worten.

4. Wenn gespeicherte Prozeduren und Funktionen ausgeführt werden, ruft SQL Manager den Prozedurcache auf, um die entsprechende Abfrageanweisung abzurufen. Wenn im Prozedurcache keine entsprechende Abfrageanweisung vorhanden ist, ruft SQL Manager die gespeicherte Prozedur ab und Funktionen werden kompiliert.

Was im Prozedurcache gespeichert wird, ist der Ausführungsplan, der im Prozedurcache kompiliert wird. Danach prüft SQL SERVER, ob er dem Cache hinzugefügt werden soll Die tatsächliche Situation jedes Ausführungsplans ist das erste Kriterium, mit der dieser Ausführungsplan verwendet werden kann, und das zweite sind die Kosten für die Erstellung dieses Plans. Der im Cache gespeicherte Plan muss bei der nächsten Ausführung nicht kompiliert werden.

Der spezifische Unterschied zwischen gespeicherten Prozeduren und benutzerdefinierten Funktionen

Schauen wir uns zunächst die Definition an:

Gespeicherte Prozeduren

Gespeicherte Prozeduren können die Datenbankverwaltung ermöglichen , und es ist viel einfacher, Informationen über die Datenbank und ihre Benutzer anzuzeigen. Eine gespeicherte Prozedur ist eine vorkompilierte Sammlung von SQL-Anweisungen und optionalen Kontrollflussanweisungen, die unter einem Namen gespeichert und als Einheit verarbeitet werden. Gespeicherte Prozeduren werden in der Datenbank gespeichert und können von der Anwendung über einen Aufruf ausgeführt werden. Sie ermöglichen Benutzern die Deklaration von Variablen, die bedingte Ausführung und andere leistungsstarke Programmierfunktionen.

Gespeicherte Prozeduren können Programmablauf, Logik und Abfragen an die Datenbank enthalten. Sie können Parameter akzeptieren, Parameter ausgeben, einzelne oder mehrere Ergebnismengen zurückgeben und Werte zurückgeben.

Gespeicherte Prozeduren können für jeden Zweck der Verwendung von SQL-Anweisungen verwendet werden und haben die folgenden Vorteile:

Eine Reihe von SQL-Anweisungen kann in einer einzigen gespeicherten Prozedur ausgeführt werden.

Sie können in Ihren eigenen gespeicherten Prozeduren auf andere gespeicherte Prozeduren verweisen, was eine Reihe komplexer Anweisungen vereinfachen kann.

Gespeicherte Prozeduren werden bei ihrer Erstellung auf dem Server kompiliert, sodass sie schneller ausgeführt werden als eine einzelne SQL-Anweisung.

Benutzerdefinierte Funktionen

Eine Funktion ist eine Unterroutine, die aus einer oder mehreren Transact-SQL-Anweisungen besteht und zum Kapseln von Code zur Wiederverwendung verwendet werden kann. Microsoft® SQL Server® 2000 beschränkt Benutzer nicht auf die integrierten Funktionen, die als Teil der Transact-SQL-Sprache definiert sind, sondern ermöglicht Benutzern stattdessen die Erstellung eigener benutzerdefinierter Funktionen.

Benutzerdefinierte Funktionen können mit der CREATE FUNCTION-Anweisung erstellt, mit der ALTER FUNCTION-Anweisung geändert und mit der DROP FUNCTION-Anweisung entfernt werden. Jeder vollständig zulässige benutzerdefinierte Funktionsname (Datenbankname.Eigentümername.Funktionsname) muss eindeutig sein.

Muss über die Berechtigung CREATE FUNCTION verfügen, um benutzerdefinierte Funktionen zu erstellen, zu ändern oder zu entfernen. Bevor ein Benutzer, der nicht der Eigentümer ist, eine Funktion in einer Transact-SQL-Anweisung verwenden kann, müssen dem Benutzer die entsprechenden Berechtigungen für die Funktion erteilt werden. Um eine Tabelle zu erstellen oder zu ändern, die auf eine benutzerdefinierte Funktion in einer CHECK-Einschränkung, einer DEFAULT-Klausel oder einer berechneten Spaltendefinition verweist, müssen Sie außerdem über die REFERENCES-Berechtigung für die Funktion verfügen.

Stellungnahme:
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