FUNCTION (Funktion) in SQL Server
- 24-07-2022
- Toanngo92
- 0 Comments
In MS SQL Server ist eine Funktion eine Funktion, die uns hilft, SQL-Anweisungen in einer Gruppe zu gruppieren und viele Male wiederverwendet werden kann, ähnlich wie beim Schreiben einer Funktion in einer Programmiersprache, aber mit einem grundlegenden Unterschied in der Syntax.
Mục lục
Funktionskonzepte in MS SQL Server
Wenn die Anweisungen gruppiert und verwendet werden, können wir die gespeicherte Prozedur vollständig verwenden und können dies immer noch tun, aber der offensichtlichste Unterschied besteht darin, dass die Funktion einen Rückgabewert hat und die gespeicherte Prozedur nur ausgeführt wird und nicht denselben Wert wie zurückgibt eine Funktion.
Funktionen vereinfachen das Programm und können mehrfach verwendet werden. Stellen Sie sich vor, wir müssen ein komplexes Geschäft erledigen, Parameter (Parameter) von außen übergeben und eine Reihe von SQL-Anweisungen nacheinander verarbeiten, dann einen bestimmten Wert zurückgeben, um die Verbindung zu bestimmen. Ende, und den Rückgabewert für die weitere Arbeit verwenden, dann ist die Funktion die geeignetste Lösung für dieses Problem.
Häufig verwendete Funktionen in SQL Server sind wie folgt:
Deterministische und nicht deterministische Funktionen (deterministische und nicht deterministische Funktionen):
Definitive Funktionen geben jedes Mal, wenn sie mit einem bestimmten Satz von Eingabewerten aufgerufen werden, dasselbe Abfrageergebnis zurück und geben denselben Zustand der Datenbank an. Undefinierte Funktionen geben jedes Mal unterschiedliche Ergebnisse zurück, wenn sie mit dem angegebenen Eingabewertsatz aufgerufen werden, obwohl die Datenbank, auf die zugegriffen wird, dieselbe bleibt.
Wenn der Benutzer beispielsweise die Funktion DAY() in einer bestimmten Spalte aufruft, gibt sie immer die Anzahl der Tage (int) für den übergebenen Datentypparameter date zurück. Wenn der Benutzer jedoch die Funktion DATENAME() aufruft, kann die Ausgabe nicht vorhergesagt werden, da jede Ausführung basierend auf dem Format des übergebenen Datums einen anderen Wert zurückgibt. Die Funktion DAY() ist also eine deterministische Funktion, während DAYNAME() eine undefinierte Funktion ist.
Der Benutzer kann den Determinismus der integrierten Funktionen nicht beeinflussen, jede integrierte Funktion ist basierend auf ihrer Implementierung auf SQL Server deterministisch oder undefiniert.
Einige der deterministischen Funktionen und nicht deterministischen Funktionen
Deterministische eingebaute Funktionen | Nicht deterministische integrierte Funktionen |
ENERGIE | @@TOTAL_WRITE |
RUNDEN | AKTUELLER ZEITSTEMPEL |
RADANT | VERABREDUNG BEKOMMEN |
EXP | GETUTCDATE |
BODEN | GET_TRANSMISSION_STATUS |
QUADRAT | NEUE ID |
Quadrat | NEWSEQUENTIALID |
PROTOKOLL | @@VERBINDUNGEN |
JAHR | @@CPU_BUSY |
Abs | @@DBTS |
WIE IN | @@LEERLAUF |
ACOS | @@IOBUSY |
SCHILD | @@PAKET_ERHALTEN |
SINUS | @@PACK_GESENDET |
Es gibt einige Funktionen, die nicht immer undefiniert sind, Sie können sie in indizierten Ansichten verwenden, wenn sie explizit angegeben werden:
Funktion | Bezeichnung |
KONVERTIEREN | Wird nur bestimmt, wenn eine der folgenden Bedingungen vorliegt: Es gibt einen Quelltyp sql_variant. Es gibt einen nicht definierten sql_variant-Zieltyp oder -Quelltyp. Lassen Sie die Quelle und das Ziel smalldatetime oder dateime oder einen anderen Quelltyp wie String sein. Der Parameterstil muss eine definierte Konstante sein. |
GIESSEN | Nur angeben, wenn smalldatetime, sql_variant, datetime verwendet wird |
ISDATE | Definieren Sie es, sofern es nicht in Verbindung mit der CONVERT .-Funktion verwendet wird |
PRÜFSUMME | Bestimmen, mit Ausnahme von CHECKSUM(*) |
Funktionsdefinition in SQL Server
Syntax:
CREATE FUNCTION function_name (param_list) RETURN data_type AS BEGIN //statements RETURN value END
Da drin:
Funktionsname: Funktionsname
param_list : Liste der an die Funktion übergebenen Parameter
RETURN data_type: Gibt den Rückgabedatentyp an
AS : Klausel, die den Prozess der Beschreibung der Anweisungen der Funktion startet
//Anweisungen : Liste von SQL-Befehlen
RETURN- Wert: Rückgabewert.
Zum Beispiel:
CREATE FUNCTION tinhphepcong(@x INT, @y INT) RETURNS INT AS BEGIN DECLARE @kq @kq = @x + @y RETURN @kq; END;
Beispiel 2:
CREATE FUNCTION sales.udfuncNetSale( @quantity INT, @list_price DEC(10,2), @discount DEC(10,2) ) RETURNS DEC(10,2) AS BEGIN RETURN @quantity * @list_price * (1 - @discount); END;
Diese Funktion berechnet den Preis eines Produkts, nachdem es reduziert wurde.
Nachdem Sie die Initialisierung dieser Funktion ausgeführt haben, sehen Sie sie in SSMS, indem Sie auf Programmierbarkeit > Funktionen > Skalarwertige Funktionen klicken.
So rufen Sie Funktionen in SQL Server auf
Wir verwenden die Funktionsname(param)-Syntax, um die Funktion in SQL Server aufrufen zu können
SELECT phepnhan (10, 20) as kequa
SELECT sales.udfuncNetSale(10,100,0.1) ketqua
ALTER-Funktion in SQL Server
Ähnlich wie bei einer gespeicherten Prozedur verwenden Sie zum Bearbeiten einer Funktion die folgende Syntax:
ALTER FUNCTION [schema_name.]function_name (parameter_list) RETURN data_type AS BEGIN statements RETURN value END
Der neue Inhalt der Funktion ersetzt den alten Inhalt. Dieser Befehl kann nur mit selbst erstellten Funktionen bearbeitet werden, integrierte Funktionen wie count, concat können nicht bearbeitet werden.
4. DROP-Funktion in SQL Server
Um eine Funktion zu löschen, verwenden Sie den Befehl DROP FUNCTION mit folgendem Aufbau:
DROP FUNCTION [schema_name.]function_name; // schema_name trong quá trình học thường là dbo
Wenn Sie beispielsweise die oben erstellte Funktion löschen möchten, führen Sie den folgenden Befehl aus:
DROP FUNCTION sales.udfNetSale;
Ebenso können Sie nur selbst erstellte Funktionen löschen.
Ein paar Anmerkungen:
- Jede Funktion kann überall in der T-SQL-Anweisung verwendet werden und liegt innerhalb des Datenbankbereichs.
- Es kann viele Parameter geben, aber nur ein einziger Wert kann zurückgegeben werden, Rückgabe ist erforderlich. (ähnlich dem Konzept der Funktion in der Programmierung)
- Jede T-SQL-Anweisung kann innerhalb der Funktion verwendet werden.
- In dieser Funktion kann eine andere definierte Funktion aufgerufen werden.