PostgreSQL - Funktionen
PostgreSQL functionsMit der Option "Gespeicherte Prozeduren" können Sie Vorgänge ausführen, für die normalerweise mehrere Abfragen und Roundtrips in einer einzigen Funktion in der Datenbank erforderlich sind. Funktionen ermöglichen die Wiederverwendung von Datenbanken, da andere Anwendungen direkt mit Ihren gespeicherten Prozeduren interagieren können, anstatt einen Code der mittleren Ebene oder zu duplizieren.
Funktionen können in einer Sprache Ihrer Wahl wie SQL, PL / pgSQL, C, Python usw. erstellt werden.
Syntax
Die grundlegende Syntax zum Erstellen einer Funktion lautet wie folgt:
CREATE [OR REPLACE] FUNCTION function_name (arguments)
RETURNS return_datatype AS $variable_name$
DECLARE
declaration;
[...]
BEGIN
< function_body >
[...]
RETURN { variable_name | value }
END; LANGUAGE plpgsql;
Wo,
function-name Gibt den Namen der Funktion an.
Mit der Option [ODER ERSETZEN] können Sie eine vorhandene Funktion ändern.
Die Funktion muss a enthalten return Erklärung.
RETURNKlausel gibt den Datentyp an, den Sie von der Funktion zurückgeben möchten. Dasreturn_datatype kann ein Basis-, Verbund- oder Domänentyp sein oder auf den Typ einer Tabellenspalte verweisen.
function-body enthält den ausführbaren Teil.
Das Schlüsselwort AS wird zum Erstellen einer eigenständigen Funktion verwendet.
plpgsqlist der Name der Sprache, in der die Funktion implementiert ist. Hier verwenden wir diese Option für PostgreSQL. Dies kann SQL, C, intern oder der Name einer benutzerdefinierten prozeduralen Sprache sein. Aus Gründen der Abwärtskompatibilität kann der Name in einfache Anführungszeichen gesetzt werden.
Beispiel
Das folgende Beispiel zeigt das Erstellen und Aufrufen einer eigenständigen Funktion. Diese Funktion gibt die Gesamtzahl der Datensätze in der COMPANY-Tabelle zurück. Wir werden die COMPANY- Tabelle verwenden, die die folgenden Datensätze enthält:
testdb# select * from COMPANY;
id | name | age | address | salary
----+-------+-----+-----------+--------
1 | Paul | 32 | California| 20000
2 | Allen | 25 | Texas | 15000
3 | Teddy | 23 | Norway | 20000
4 | Mark | 25 | Rich-Mond | 65000
5 | David | 27 | Texas | 85000
6 | Kim | 22 | South-Hall| 45000
7 | James | 24 | Houston | 10000
(7 rows)
Die Funktion totalRecords () lautet wie folgt:
CREATE OR REPLACE FUNCTION totalRecords ()
RETURNS integer AS $total$
declare
total integer;
BEGIN
SELECT count(*) into total FROM COMPANY;
RETURN total;
END;
$total$ LANGUAGE plpgsql;
Wenn die obige Abfrage ausgeführt wird, wäre das Ergebnis -
testdb# CREATE FUNCTION
Lassen Sie uns nun diese Funktion aufrufen und die Datensätze in der Tabelle COMPANY überprüfen
testdb=# select totalRecords();
Wenn die obige Abfrage ausgeführt wird, wäre das Ergebnis -
totalrecords
--------------
7
(1 row)