Erstellen einer gespeicherten Prozedur in Azure Database for PostgreSQL
Das Erstellen einer gespeicherten Prozedur für eine bestimmte Aufgabe hat viele Vorteile, so z. B. das Erweitern der Funktionalität Ihrer Azure for PostgreSQL-Datenbank. Verwenden Sie eine gespeicherte Prozedur für folgende Zwecke:
- Entwickeln und Testen von komplexem Code an zentraler Stelle, der dann überall dort aufgerufen werden kann, wo er benötigt wird.
- Effizientes Ausführen von Code. Gespeicherte Prozeduren, die das gleiche Ergebnis zurückgeben, sind effizienter, da sie vorkompiliert und auf dem Azure Database for PostgreSQL-Server gespeichert sind.
- Erleichtern des Lesens von Code.
- Einschließen der Fehlerbehandlung in eine Transaktion.
- Verbergen von Komplexität vor Benutzern.
Azure Database for PostgreSQL unterstützt zwar mehrere Programmiersprachen, SQL ist aber die native Sprache von PostgreSQL und funktioniert am besten mit dem Optimierer.
Eine gespeicherte Prozedur wird mit den Schlüsselwörtern CREATE PROCEDURE erstellt. Verwenden Sie alternativ CREATE OR REPLACE PROCEDURE, um entweder eine neue Prozedur zu erstellen oder eine Prozedur mit demselben Namen zu ersetzen.
Fügen Sie den Namen eines Schemas ein, um die Prozedur in einem bestimmten Schema zu erstellen. Andernfalls wird sie im aktuellen Schema erstellt. Der Prozedurname muss innerhalb des Schemas eindeutig sein, einschließlich der Eingabeargumenttypen. Sie können jedoch Prozedurnamen überladen, indem Sie denselben Namen für eine Prozedur oder Funktion mit verschiedenen Argumenttypen angeben.
Der Benutzer, der die Prozedur erstellt, ist Besitzer der Prozedur. Sie müssen auch die Sprache angeben.
Prozeduren akzeptieren die folgenden Parameter:
- name: kann optional den Namen des Schemas enthalten.
- argmode: der Modus des Arguments. Kann IN, INOUT oder VARIADIC sein. Standard ist IN. OUT wird nicht unterstützt. Verwenden Sie stattdessen INOUT. VARDIADIC ist eine nicht definierte Anzahl von Eingabeargumenten desselben Typs, die die letzten Eingabeargumente sein müssen.
- argname: Argumentname
- argtype: Typ der Argumentdaten
- default_expr: ein Standardausdruck (desselben Typs), der verwendet werden soll, wenn der Parameter nicht angegeben wird. Eingabeparameter, die auf einen Parameter mit einem Standardwert folgen, müssen ebenfalls Standardwerte haben.
- lang_name: die Sprache, in der die Prozedur geschrieben wurde. Kann „sql“, „c“, „internal“ oder der Name einer benutzerdefinierten Prozedursprache sein, z. B. plpgsql.
Im folgenden Beispiel wird die gespeicherte Prozedur „myprocedure“ erstellt, die die Eingabeparameter „a“ und „b“ verwendet. IN ist die Standardeinstellung für Parameter, sodass wir sie nicht explizit als Eingabeparameter bestimmen müssen. Wenn die gespeicherte Prozedur aufgerufen wird, werden die diesen Parametern zugewiesenen Werte in „mytable“ eingefügt.
CREATE PROCEDURE myprocedure (a integer, b integer)
LANGUAGE SQL
AS $$
INSERT INTO mytable VALUES (a, b);
$$;
Das Symbol $$
wird verwendet, um eine Zeichenfolge zu beginnen und zu beenden. Sie können auch einzelne Anführungszeichen verwenden, aber dies kann Probleme mit anderen Programmiersprachen verursachen, weshalb $$
bevorzugt wird.