Erstellen Sie eine Funktion in SQL

Erstellen Sie Eine Funktion In Sql



Relationale Datenbanken gehören zu den gebräuchlichsten und leistungsstärksten Datenbanksystemen der modernen Welt. Eines der Dinge, die alle relationalen Datenbanken gemeinsam haben, ist die Verwendung von SQL.

Standard Query Language oder SQL, wie wir es kennen, ist eine leistungsstarke und flexible Sprache für die Interaktion, Verwaltung und Bearbeitung der in einer relationalen Datenbank gespeicherten Daten.







Es gibt eine leistungsstarke Funktion in SQL, die es uns ermöglicht, benutzerdefinierte Funktionen zu definieren, die auch als SQL-Funktionen bezeichnet werden. Eine benutzerdefinierte Funktion in SQL ermöglicht es uns, eine bestimmte Aufgabe innerhalb der Datenbank auszuführen. Die Funktion kann eine Vielzahl von Vorgängen ausführen, von der Abfrage der Daten aus der Datenbank bis hin zur Bearbeitung vorhandener Daten.



In diesem Handbuch erfahren Sie, wie Sie mit der CREATE FUNCTION-Anweisung in SQL arbeiten, um zu erfahren, wie wir benutzerdefinierte Funktionen erstellen können.



Anforderungen:

Bevor wir beginnen, stellen Sie sicher, dass die folgenden Anforderungen erfüllt sind:







  1. Eine SQL-Variante (MySQL, PostgreSQL, SQLite usw.)
  2. Berechtigungen zum Erstellen von Funktionen auf dem Zieldatenbankserver

Wenn die gegebenen Voraussetzungen erfüllt sind, können wir fortfahren.

SQL-Funktionen

SQL-Funktionen sind einer typischen Funktion in anderen Programmiersprachen sehr ähnlich. Es handelt sich lediglich um eine Möglichkeit, wiederverwendbare Codeblöcke zu erstellen, die Parameter akzeptieren, eine bestimmte Aufgabe ausführen und einen Wert oder ein Ergebnis zurückgeben können.









Wir können die SQL-Funktionen in zwei Hauptkategorien einteilen:



  1. Skalarfunktionen – Die Skalarfunktionen geben einen einzelnen Wert basierend auf den Eingabeparametern zurück. Eine häufige Verwendung von Skalarfunktionen ist die Berechnung von Werten oder Datentransformationen.
  2. Tabellenwertfunktionen – TFVs hingegen geben eine Tabelle als Ausgabe zurück. TVDs werden häufig bei der Arbeit mit sehr komplexen Abfragen verwendet. Wenn Sie eine Funktion benötigen, die eine Reihe von Datensätzen zurückgeben kann, sind Tabellenwertfunktionen ein gutes Werkzeug.

Erstellen Sie eine Funktionsanweisung in SQL

In SQL verwenden wir die CREATE FUNCTION-Anweisung, um eine benutzerdefinierte Funktion in SQL zu erstellen. Im Folgenden wird die Syntax für die CREATE FUNCTION-Anweisung in SQL gezeigt:



FUNKTION ERSTELLEN func_name ( [ pa1 data_type, par data_type, ... ] )
RÜCKKEHR rt_data_type
BEGINNEN
-- Funktion Körper
ENDE;

Wir beginnen mit dem Schlüsselwort CREATE FUNCTION, um anzugeben, dass wir eine neue benutzerdefinierte Funktion erstellen möchten. Wir achten auch darauf, den Namen der Funktion zu übergeben.

Als nächstes stellen wir die Funktionseingabeparameter in Klammern bereit. Eine Funktion kann null oder mehr Parameter haben.

Um einen Parameter zu definieren, beginnen wir mit dem Parameternamen und dem Datentyp der Funktion, den die Funktion akzeptieren soll.

Anschließend legen wir den Rückgabewert der Funktion fest. Dies erreichen wir, indem wir den Datentyp festlegen, den die Funktion zurückgeben soll. Wenn die Funktion beispielsweise eine Zahl zurückgibt, können Sie einen entsprechenden Rückgabewert wie INT angeben.

Als nächstes verwenden wir das Schlüsselwort BEGIN, um den Anfang des Funktionskörpers zu kennzeichnen. Im Funktionskörper stellen wir alle Aufgaben bereit, die die Funktion ausführen soll.

Zuletzt schließen wir den Funktionskörper mit dem Schlüsselwort END.

Beispiel 1:

Schauen wir uns ein praktisches Beispiel an, das zeigt, wie Sie mit der CREATE FUNCTION-Anweisung eine neue SQL-Funktion definieren.

Angenommen, wir haben eine Funktion, die den Logarithmus einer gegebenen Eingabezahl bestimmt. In SQL können wir die Funktion wie folgt definieren:

Trennzeichen $$
FUNKTION „calcure_logarithm“ ERSTELLEN ( Eingabewert FLOAT )
Gibt Float zurück
DETERMINISTISCH
BEGINNEN
WENN input_value NULL IST ODER input_value < = 0 DANN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = '[Fehler]: Ungültige Eingabe.' ;
ENDE WENN;
RÜCKGABE LN ( eingegebener Wert ) ;
ENDE$ $
DELIMITER ;

In diesem Beispiel ändern wir zunächst vorübergehend das Trennzeichen, das in den SQL-Abfragen verwendet wird. Dies ist eine häufige Aufgabe in MySQL, um die Unterscheidung zwischen den SQL-Anweisungen innerhalb der Funktion und den Funktionsdefinitionen zu erleichtern.

Als nächstes erstellen wir eine Funktion, die den natürlichen Logarithmus eines gegebenen Eingabewerts berechnet. Die Funktion gibt einen Float zurück.

HINWEIS: Beachten Sie die Verwendung des Schlüsselworts DETERMINISTIC, das angibt, dass die Funktion dasselbe Ergebnis für dieselbe Eingabe zurückgibt. Dies spielt eine entscheidende Rolle bei der Abfrageoptimierung.

Im Funktionskörper prüfen wir, ob die Eingabe ein positiver Wert ist und geben einen Fehler zurück, wenn sie falsch ist. Andernfalls berechnen wir den Logarithmus des Werts und geben die Ausgabe zurück.

Schließlich verwenden wir END$$, um das Ende der Funktionslogik zu kennzeichnen.

HINWEIS: Wir verwenden auch die DELIMITER-Anweisung, um das Trennzeichen auf den Standardwert zurückzusetzen.

Sobald wir die Funktion definiert haben, können wir die Funktion wie folgt aufrufen:

SELECT calculate_logarithm ( 100 ) ;

Dies sollte die Funktion mit der angegebenen Eingabe aufrufen und den entsprechenden Logarithmuswert oder Fehler zurückgeben, wenn die Eingabe ungültig ist.

Beispiel 2:

Wir können auch eine TVF erstellen, die eine Tabelle zurückgibt, wie im folgenden Beispiel gezeigt:

ERSTELLEN SIE DIE FUNKTION FetchDatabases ( c_id VARCHAR )
RÜCKGABETABELLE (
db_id INT,
Datenbankname VARCHAR ( 255 )
)
BEGINNEN
ZURÜCKKEHREN (
SELECT db_id, db_name
AUS Datenbanken
WHERE class_id = c_id
) ;
ENDE;

WÄHLEN * VON FetchDatabases ( 'dokumentieren' ) ;

In diesem Code gibt die Funktion alle Datensätze zurück, bei denen die Datenbankklasse gleich „Dokument“ ist. Dadurch werden alle übereinstimmenden Datensätze aus der Datenbanktabelle als Tabelle mit den Spalten „db_id“ und „db_name“ zurückgegeben.

Abschluss

In diesem Tutorial haben wir die Funktionsweise der CREATE FUNCTION-Anweisung in SQL kennengelernt, die es uns ermöglicht, eine benutzerdefinierte gekapselte Logik zu erstellen, die wir in der gesamten Datenbank wiederverwenden können.