Eine Sammlung von SQL-Anweisungen, die in gespeicherten Prozeduren und Funktionen enthalten sind, Datenbankobjekten, die zur Ausführung bestimmter Aufgaben verwendet werden (oder auch in der Datenwissenschaft verwendet werden können). Die beiden unterscheiden sich in vielerlei Hinsicht.
In diesem Artikel gehen wir ausführlich auf Funktionen und Abläufe und deren Unterschiede ein.
Beginnen wir mit gespeicherten Prozeduren -
Einfach geschriebener SQL-Code wird zur mehrfachen Wiederverwendung gespeichert und bildet eine gespeicherte Prozedur. Wenn Ihnen eine Abfrage einfällt, die Sie häufig schreiben, können Sie sie als gespeicherte Prozedur speichern und dann diese gespeicherte Prozedur aufrufen, um den SQL-Code auszuführen, den Sie als Teil der gespeicherten Prozedur gespeichert haben. Dies erspart Ihnen das wiederholte Schreiben derselben Fragen.
Sie können denselben SQL-Code wiederholt ausführen und Parameter für gespeicherte Prozeduren bereitstellen. Bei Bedarf reagiert die gespeicherte Prozedur entsprechend den bereitgestellten Parameterwerten.
Die Leistung kann auch durch gespeicherte Prozeduren verbessert werden. Zur Ausführung mehrerer Aufgaben wird eine Reihe von SQL-Anweisungen verwendet. Welche SQL-Anweisungen als nächstes ausgeführt werden, hängt von den Ergebnissen der anfänglichen SQL-Anweisung und der bedingten Logik ab. Diese SQL-Anweisungen und die darin enthaltene bedingte Logik können zu einem einzigen Ausführungsplan auf dem Server zusammengefasst werden, indem sie in eine gespeicherte Prozedur geschrieben werden. Da die gesamte Arbeit auf dem Server ausgeführt wird, kann die bedingte Logik ausgeführt werden, ohne dass die Ergebnisse an den Client übergeben werden.
Jede gespeicherte Prozedur wird einmal von SQL Server kompiliert und dann wird der Ausführungsplan wiederverwendet. Wenn gespeicherte Prozeduren häufig aufgerufen werden, sind die Leistungsverbesserungen enorm.
Wenn die Netzwerkbandbreite in Ihrer Umgebung ein Problem darstellt, werden Sie es zu schätzen wissen, dass gespeicherte Prozeduren langwierige SQL-Suchen in einer einzigen Zeile komprimieren können, die über die Leitung übertragen werden kann.
Gespeicherte Prozeduren stehen vielen Benutzer- und Clientanwendungen zur Verfügung. Wenn Sie sie auf geplante Weise verwenden, dauert es weniger Zeit, den Entwicklungszyklus abzuschließen.
Unabhängig von den Berechtigungen für die zugrunde liegende Tabelle können Sie Benutzern Zugriff zum Ausführen gespeicherter Prozeduren gewähren.
SQL Server unterstützt zwei Arten von Funktionen
Eingebaute Funktionen funktionieren gemäß der Transact-SQL-Referenzdefinition und können nicht geändert werden. Nur Transact-SQL-Anweisungen, die der durch die Transact-SQL-Referenz festgelegten Syntax folgen, können diese Funktionen als Referenz verwenden.
Das System hat diese Funktionen bereits definiert. Es ist in zwei Kategorien unterteilt -
In diesem Tutorial beziehen wir uns auf die folgende Tabelle -
ID |
Name |
Tag |
Alter |
---|---|---|---|
1 |
Stern |
90 |
19 |
2 |
Suresh |
50 |
20 |
3 |
Pratik |
80 |
21 |
4 |
Dhanraj |
95 |
19 |
5 |
Ram |
85 |
18 |
Diese Operationen nehmen einen Wert als Eingabe und geben ihn aus. Einige systemische Skalaroperationen umfassen -
round() – Rundet eine Zahl auf die nächsten drei Ziffern. Zum Beispiel ergibt „round(28.64851)“ 28,649
SELECT ROUND(MARKS,0) FROM students;
upper() - Upper("english") gibt Englisch zurück, Lower("ENGLISH") gibt Englisch zurück.
SELECT upper(NAME) FROM Students;
HARSH SURESH PRATIK DHANRAJ RAM
rand() – Mit der Funktion rand() wird eine Zufallszahl in einem Bereich zurückgegeben. Rand(8) gibt beispielsweise 0,71372242401 oder eine andere zufällig generierte Zahl zurück.
Diese Funktionen geben einen einzelnen Wert zurück, diese Funktionen akzeptieren eine Sammlung von Eingabeargumenten. Beispiele hierfür sind -
Avg() liefert den Durchschnittswert für alle bereitgestellten Eingaben.
SELECT AVG(MARKS) FROM Students;
80
Count() Diese Funktion gibt die Anzahl der Zeilen zurück, die die gegebene Bedingung erfüllen.
SELECT COUNT(*) FROM Students;
5
Max() und min() Die Funktionen max() und min() geben den höchsten und niedrigsten Wert unter den angegebenen Argumenten zurück.
SELECT MAX(AGE) FROM Students
21
SELECT MIN(AGE) FROM Students;
18
Erstellen Sie benutzerdefinierte Transact-SQL-Funktionen mit dem Befehl CREATE FUNCTION. Benutzerdefinierte Funktionen stellen einen einzelnen Wert bereit und erfordern null bis mehr Eingabeparameter. Einige benutzerdefinierte Funktionen (UDFs) geben einen einzelnen Datenwert zurück, beispielsweise eine Dezimalzahl, ein Zeichen oder eine Ganzzahl.
Benutzerdefinierte Skalarfunktionen geben für jeden Schritt der Funktionsoperation einen Wert aus. Gibt einen beliebigen Datentypwert in der Funktion zurück.
Inline-Tabellenfunktionen mit benutzerdefinierten Werten führen Operationen aus und geben die Ergebnisse als Tabelle zurück. Es gibt keinen BEGIN/END-Körper. Verwenden Sie einfach eine SELECT-Anweisung, um die Ergebnisse zu erhalten.
Wenn eine benutzerdefinierte Funktion eine nicht änderbare SELECT-Anweisung oder mehrere SELECT-Anweisungen enthält, ändern sich die Ergebnisse nicht. Wir müssen Tabellenvariablen explizit angeben und die Werte beschreiben, die aus verschiedenen SQL-Abfragen abgerufen werden können.
Unterstützung der modularen Programmierung
Die Funktion kann einmal erstellt, in der Datenbank gespeichert und dann beliebig oft in der Software verwendet werden. Benutzerdefinierte Funktionen können geändert werden, ohne den Quellcode der Anwendung zu ändern.
Sie beschleunigen die Ausführung
Benutzerdefinierte Transact-SQL-Funktionen (z. B. gespeicherte Prozeduren) reduzieren die Kompilierungskosten, indem sie Pläne zwischenspeichern und für mehrere Ausführungen wiederverwenden. Da benutzerdefinierte Funktionen nicht bei jeder Verwendung erneut analysiert und optimiert werden müssen, wird die Ausführungszeit erheblich verkürzt.
Bei Rechenlasten, Geschäftslogik und String-Operationen schneiden CLR-Funktionen deutlich besser ab als Transact-SQL-Funktionen. Datenzugriffsintensive Logik eignet sich besser für Transact-SQL-Vorgänge.
Sie können die Netzwerkaktivität verringern.
Funktionen können zur Darstellung von Operationen verwendet werden, die Informationen basierend auf komplexen Einschränkungen filtern, die nicht durch einen einzelnen numerischen Ausdruck dargestellt werden können. Um die Anzahl der an den Client bereitgestellten Zeilen zu reduzieren, kann diese Funktion in der WHERE-Klausel verwendet werden.
Die folgende Tabelle zeigt die wichtigsten Unterschiede zwischen benutzerdefinierten Funktionen und gespeicherten Prozeduren in SQL -
Standard |
Benutzerdefinierte Funktionen |
Gespeicherte Prozedur |
---|---|---|
Rückgabewert |
Einzelwert |
Einzeln, mehrfach oder sogar null |
Parameter |
Wert eingeben |
Eingabe- und Ausgabewerte |
Datenbank |
Kann nicht geändert werden |
kann geändert werden |
Statement |
Nur SELECT-Anweisung |
SELECT- und DML-Anweisungen |
Anruf |
Anruf vom Verfahren |
kann nicht von der Funktion aufgerufen werden |
Kompilieren und ausführen |
Muss jedes Mal kompiliert werden |
Nur einmal kompilieren |
Transaktionsmanagement |
Unmöglich |
Unmöglich |
In diesem Artikel haben wir uns eingehend mit gespeicherten Prozeduren und ihren Vorteilen, Funktionen, Funktionstypen und Vorteilen von Funktionen befasst und abschließend den Unterschied zwischen Funktionen und gespeicherten Prozeduren erläutert.
Das obige ist der detaillierte Inhalt vonSchreiben Sie Funktionen und gespeicherte Prozeduren in SQL Server. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!