name

Der name (Optional schema qualifiziert), der die Prozedur zu erstellen.

argmode

Der Modus eines Arguments: IN, INOUT oder VARIADIC. Wenn weggelassen, ist der Standardwert IN. (OUT Argumente werden derzeit nicht für Prozeduren unterstützt. Verwenden Sie stattdessen INOUT.)

argname

Der name eines Arguments.,

argtype

Die Datentypen der Argumente der Prozedur(optional schemaqualifiziert), falls vorhanden. Die Argumenttypen können Basis -, zusammengesetzte oder Domänentypen sein oder auf den Typ einer Tabellenspalte verweisen.

Abhängig von der Implementierungssprache kann es auch erlaubt sein, „Pseudo-Typen“ wie cstringanzugeben. Pseudo-Typen geben an, dass der tatsächliche Argumenttyp entweder unvollständig angegeben ist oder außerhalb des Satzes gewöhnlicher SQL-Datentypen liegt.

Der Spaltentyp wird durch Schreiben von table_namereferenziert.,column_name%TYPE. Die Verwendung dieser Funktion kann manchmal dazu beitragen, eine Prozedur unabhängig von Änderungen an der Definition einer Tabelle zu machen.

default_expr

Ein Ausdruck, der als Standardwert verwendet werden soll, wenn der Parameter nicht angegeben ist. Der Ausdruck muss für den Argumenttyp des Parameters zwingend sein. Alle Eingabeparameter, die einem Parameter mit einem Standardwert folgen, müssen ebenfalls Standardwerte haben.

lang_name

Der Name der Sprache, in der die Prozedur implementiert ist., Dies kann sql, c, internal oder der Name einer benutzerdefinierten Verfahrenssprache sein, z. B. plpgsql. Das Einschließen des Namens in einfache Anführungszeichen ist veraltet und erfordert einen übereinstimmenden Fall.

TRANSFORM { FOR TYPE type_name } }

Listet auf, welche Transformationen für einen Aufruf der Prozedur gelten sollen. Transformationen konvertieren zwischen SQL-Typen und sprachspezifischen Datentypen; siehe CREATE TRANSFORM. Prozedurale Sprachimplementierungen verfügen normalerweise über fest codierte Kenntnisse der integrierten Typen, sodass diese hier nicht aufgeführt werden müssen., Wenn eine prozedurale Sprachimplementierung nicht weiß, wie mit einem Typ umzugehen ist und keine Transformation bereitgestellt wird, wird auf ein Standardverhalten zum Konvertieren von Datentypen zurückgegriffen, dies hängt jedoch von der Implementierung ab.

SECURITY INVOKER
SECURITY DEFINER

SECURITY INVOKER gibt an, dass die Prozedur mit den Rechten des Benutzers ausgeführt werden soll, der sie aufruft. Das ist der Standardwert. SECURITY DEFINER gibt an, dass die Prozedur mit den Rechten des Benutzers ausgeführt werden soll, dem sie gehört.,

Das Schlüsselwort EXTERNAL ist für die SQL-Konformität zulässig, aber optional, da diese Funktion im Gegensatz zu SQL für alle Prozeduren gilt, nicht nur für externe.

EineSECURITY DEFINER – Prozedur kann keine Transaktionskontrollanweisungen ausführen (z. B.COMMIT undROLLBACK, abhängig von der Sprache).,

configuration_parameter
value

Die SET – Klausel bewirkt, dass der angegebene Konfigurationsparameter bei der Eingabe der Prozedur auf den angegebenen Wert gesetzt und beim Beenden der Prozedur auf den vorherigen Wert wiederhergestellt wird. SET FROM CURRENT speichert den Wert des Parameters, der aktuell ist, wenn CREATE PROCEDURE als Wert ausgeführt wird, der angewendet werden soll, wenn die Prozedur eingegeben wird.,

Wenn eineSET – Klausel an eine Prozedur angehängt ist, sind die Auswirkungen einesSET LOCAL – Befehls, der innerhalb der Prozedur für dieselbe Variable ausgeführt wird, auf die Prozedur beschränkt: Der vorherige Wert des Konfigurationsparameters wird beim Beenden der Prozedur immer noch wiederhergestellt., Ein gewöhnlicher SET – Befehl (ohne LOCAL) überschreibt jedoch die SET – Klausel, ähnlich wie bei einem vorherigen SET LOCAL – Befehl: Die Auswirkungen eines solchen Befehls bleiben nach dem Beenden der Prozedur bestehen, es sei denn, die aktuelle Transaktion wird zurückgesetzt.

Wenn eineSET – Klausel an eine Prozedur angehängt ist, kann diese Prozedur keine Transaktionskontrollanweisungen ausführen (z. B.COMMIT undROLLBACK, abhängig von der Sprache).,

Weitere Informationen zu zulässigen Parameternamen und Werten finden Sie unter SET und Kapitel 19.

definition

Eine String-Konstante, die die Prozedur definiert; Die Bedeutung hängt von der Sprache ab. Dies kann ein interner Prozedurname, der Pfad zu einer Objektdatei, ein SQL-Befehl oder Text in einer prozeduralen Sprache sein.

Es ist oft hilfreich, Dollar-Anführungszeichen (siehe Abschnitt 4.1.2.4) zu verwenden, um die Prozedurdefinitionszeichenfolge anstelle der normalen einfachen Anführungszeichen-Syntax zu schreiben. Ohne Dollar-Zitate müssen einfache Anführungszeichen oder Backslashes in der Prozedurdefinition durch Verdoppeln maskiert werden.,

obj_file, link_symbol

Diese Form der AS – Klausel wird für dynamisch ladbare C-Sprachprozeduren verwendet, wenn der Prozedurname im Quellcode der C-Sprache nicht mit dem Namen der SQL-Prozedur übereinstimmt. Die Zeichenfolge obj_file ist der Name der gemeinsam genutzten Bibliotheksdatei, die die kompilierte C-Prozedur enthält, und wird wie für den Befehl LOAD interpretiert. Die Zeichenfolge link_symbol ist das Verknüpfungssymbol der Prozedur, dh der Name der Prozedur im Quellcode der C-Sprache., Wenn das Verknüpfungssymbol weggelassen wird, wird angenommen, dass es mit dem Namen der zu definierenden SQL-Prozedur übereinstimmt.

Wenn wiederholteCREATE PROCEDURE Aufrufe auf dieselbe Objektdatei verweisen, wird die Datei nur einmal pro Sitzung geladen. Um die Datei zu entladen und neu zu laden (möglicherweise während der Entwicklung), starten Sie eine neue Sitzung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.