Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Dieses Feature befindet sich in der Public Preview.
Gilt für:
Databricks SQL Databricks Runtime 17.0 und höher
"Unity-Katalog" markiert
Erstellt eine Prozedur im Unity-Katalog, die Argumente akzeptiert oder ändert, eine Reihe von SQL-Anweisungen ausführt und optional einen Resultset zurückgibt.
Zusätzlich zum Aufruf von Positionsparametern können Sie auch Prozeduren mithilfe des benannten Parameteraufrufs aufrufen.
Syntax
CREATE [OR REPLACE] PROCEDURE [IF NOT EXISTS]
procedure_name ( [ procedure_parameter [, ...] ] )
[ characteristic [...] ]
AS compound_statement
procedure_parameter
[ IN | OUT | INOUT ] parameter_name data_type
[ DEFAULT default_expression ] [ COMMENT parameter_comment ]
characteristic
{ LANGUAGE SQL |
SQL SECURITY INVOKER |
NOT DETERMINISTIC |
COMMENT procedure_comment |
DEFAULT COLLATION UTF8_BINARY |
MODIFIES SQL DATA }
Die Parameter
ODER ERSETZEN
Wenn angegeben, wird eine Prozedur mit demselben Namen ersetzt. Sie können eine vorhandene Funktion nicht durch eine Prozedur ersetzen. Dieser Parameter kann nicht zusammen mit
IF NOT EXISTSangegeben werden.WENN NICHT EXISTIERT
Wenn angegeben, wird die Prozedur nur erstellt, wenn eine Prozedur mit dieser Notiz noch nicht vorhanden ist. Wenn eine Prozedur mit demselben Namen vorhanden ist, wird die Anweisung ignoriert. Dieser Parameter kann nicht zusammen mit
OR REPLACEangegeben werden.-
Ein Name für die Prozedur. Optional können Sie den Prozedurnamen mit einem Schemanamen qualifizieren. Wenn der Name nicht qualifiziert ist, wird die permanente Prozedur im aktuellen Schema erstellt.
Der Prozedurname muss für alle Routinen (Prozeduren und Funktionen) im Schema eindeutig sein.
procedure_parameter
Gibt einen Parameter der Prozedur an.
-
Der Parametername muss innerhalb der Prozedur eindeutig sein.
IN, INOUT oder OUT
Beschreibt optional den Modus des Parameters.
IN
Definiert einen Nur-Eingabe-Parameter. Dies ist die Standardeinstellung.
INOUT
Definiert einen Parameter, der ein Eingabeausgabeargument akzeptiert. Wenn die Prozedur ohne unbehandelten Fehler abgeschlossen wird, gibt sie den endgültigen Parameterwert als Ausgabe zurück.
AUS
Definiert einen Ausgabeparameter. Der Parameter wird auf
NULLinitialisiert und, wenn die Prozedur ohne einen unbehandelten Fehler abgeschlossen wird, gibt er den endgültigen Parameterwert als Ausgabe zurück.
-
Jeder unterstützte Datentyp.
STANDARD default_expression
Ein optionaler Standardwert, der verwendet wird, wenn ein Funktionsaufruf dem Parameter kein Argument zuweist.
default_expressionmuss umwandelbar indata_typesein. Der Ausdruck darf nicht auf einen anderen Parameter verweisen oder eine Unterabfrage enthalten.Wenn Sie einen Standardwert für einen Parameter angeben, müssen alle folgenden Parameter ebenfalls einen Standardwert haben.
DEFAULTwird fürOUTParameter nicht unterstützt.KOMMENTAR Kommentar
Eine optionale Beschreibung des Parameters.
commentmuss einSTRING-Literal sein.
-
-
Eine SQL-Verbund-Anweisung (
BEGIN ... END) mit der Definition der SQL-Prozedur.Beim Erstellen der Prozedur wird die syntaktische Korrektheit überprüft. Der Prozedurkörper wird erst auf semantische Korrektheit überprüft, wenn die Prozedur aufgerufen wird.
charakteristisch
Das Merkmal
SQL SECURITY INVOKERundLANGUAGE SQLsind erforderlich. Alle anderen sind optional. Sie können eine beliebige Anzahl von Merkmalen in beliebiger Reihenfolge angeben, aber Sie können jede Klausel nur einmal angeben.LANGUAGE SQL
Die Sprache der Funktionsimplementierung.
SQL SECURITY INVOKER
Gibt an, dass alle SQL-Anweisungen im Textkörper der Prozedur unter der Autorität des Benutzers ausgeführt werden, der die Prozedur aufruft.
Beim Auflösen von Beziehungen und Routinen im Textkörper des Verfahrens verwendet Azure Databricks den aktuellen Katalog und das aktuelle Schema zum Zeitpunkt des Aufrufs.
NICHT DETERMINISTISCH
Eine Prozedur wird als nicht deterministisch angenommen, d. h. sie kann unterschiedliche Ergebnisse für jeden Aufruf zurückgeben, auch wenn sie mit denselben Argumenten aufgerufen wird.
PROZEDURKOMMENTAR
Ein Kommentar zum Verfahren.
procedure_commentmuss literal seinSTRING. Der Standardwert lautetNULL.STANDARD-KOLLATIONIERUNG UTF8_BINARY
Gilt für:
Databricks SQL
Databricks Runtime 17.1 and aboveErzwingt die Standardsortierreihenfolge der Prozedur auf
UTF8_BINARY. Diese Klausel ist obligatorisch, wenn das Schema, in dem die Prozedur erstellt wird, eine Standard-Zeichensortierung erhält, die vonUTF8_BINARYabweicht. Die Standardsortierung der Prozedur wird als Standardsortierung für die Prozedurparameter, ebenso wie für alle Zeichenfolgenliterale und lokalen Variablen im Prozedurrumpf verwendet.ÄNDERT SQL-DATEN
Es wird angenommen, dass eine Prozedur SQL-Daten ändert.
Beispiele
-- Demonstrate INOUT and OUT parameter usage.
> CREATE OR REPLACE PROCEDURE add(x INT, y INT, OUT sum INT, INOUT total INT)
LANGUAGE SQL
SQL SECURITY INVOKER
COMMENT 'Add two numbers'
AS BEGIN
SET sum = x + y;
SET total = total + sum;
END;
> DECLARE sum INT;
> DECLARE total INT DEFAULT 0;
> CALL add(1, 2, sum, total);
> SELECT sum, total;
3 3
> CALL add(3, 4, sum, total);
7 10
-- The last executed query is the result set of a procedure
> CREATE PROCEDURE greeting(IN mode STRING COMMENT 'informal or formal')
LANGUAGE SQL
SQL SECURITY INVOKER
AS BEGIN
SELECT 'Hello!';
CASE mode WHEN 'informal' THEN SELECT 'Hi!';
WHEN 'formal' THEN SELECT 'Pleased to meet you.';
END CASE;
END;
> CALL greeting('informal');
Hi!
> CALL greeting('formal');
Pleased to meet you.
> CALL greeting('casual');
Hello!