DECLARE (Snowflake Scripting)¶
Deklariert eine oder mehrere Variablen, Cursors, RESULTSETs oder Ausnahmen in Snowflake Scripting.
Weitere Informationen zu Variablen, Cursors, RESULTSETs und Ausnahmen finden Sie unter:
- Siehe auch::
Syntax¶
DECLARE
{ <variable_declaration> | <cursor_declaration> | <resultset_declaration> | <exception_declaration> };
[{ <variable_declaration> | <cursor_declaration> | <resultset_declaration> | <exception_declaration> }; ... ]
Die Syntax jedes Deklarationstyps wird im Folgenden ausführlich beschrieben.
Syntax der Variablendeklaration¶
Verwenden Sie die folgende Syntax, um eine Variable zu deklarieren.
<variable_declaration> ::=
<variable_name> [<type>] [ { DEFAULT | := } <expression>]
Wobei:
variable_name
Der Name der Variablen. Der Name muss den Snowflake-Regeln für Bezeichner folgen (siehe unter Objektbezeichner).
type
DEFAULT expression
oder .:= expression
Weist der Variablen den Wert von
expression
zu. Wenn sowohl der Typtype
als auch der Ausdruckexpression
angegeben sind, muss der Ausdruck einen Datentyp ergeben, der mit dem angegebenentype
-Wert übereinstimmt oder implizit in diesen umgewandelt werden kann.
Beispiel:
profit NUMBER(38, 2) := 0;
Ein vollständiges Beispiel finden Sie unter Beispiele.
Weitere Informationen zu Variablen finden Sie unter Verwenden von Variablen.
Syntax der Cursordeklaration¶
Verwenden Sie die folgende Syntax, um einen Cursor zu deklarieren.
<cursor_declaration> ::=
<cursor_name> CURSOR FOR <query>
Wobei:
cursor_name
Der Name, den der Cursor erhalten soll. Dies kann ein beliebiger gültiger Snowflake Bezeichner sein, der in diesem Block noch nicht verwendet wird. Der Bezeichner wird von anderen Cursor-bezogenen Befehlen verwendet, z. B.
FETCH
.query
Die Abfrage, die das Resultset definiert, über das der Cursor iteriert.
Dies kann fast jede gültige
SELECT
-Anweisung sein.
Beispiel:
c1 CURSOR FOR SELECT id, price FROM invoices;
Weitere Informationen zu Cursors (einschließlich vollständiger Beispiele) finden Sie unter Verwenden von Cursors.
Syntax der RESULTSET-Deklaration¶
Verwenden Sie die folgende Syntax, um ein RESULTSET zu deklarieren.
<resultset_name> RESULTSET [ { DEFAULT | := } [ ASYNC ] ( <query> ) ] ;
Wobei:
resultset_name
Der Name, den das RESULTSET erhalten soll.
Der Name muss innerhalb des aktuellen Sichtbarkeitsbereichs eindeutig sein.
Der Name muss den Snowflake-Regeln für Bezeichner folgen (siehe unter Objektbezeichner).
ASYNC
Führt die Abfrage als anonymen untergeordneten Job aus.
Die Abfrage kann jede gültige SQL-Anweisung sein, einschließlich SELECT-Anweisungen und DML-Anweisungen wie INSERT oder UPDATE.
Wenn dieses Schlüsselwort weggelassen wird, führt die gespeicherte Prozedur die untergeordneten Jobs nacheinander aus und jeder untergeordnete Job wartet, bis der laufende untergeordnete Job beendet ist, bevor er beginnt.
Mit diesem Schlüsselwort können Sie mehrere untergeordnete Jobs gleichzeitig ausführen, was die Effizienz steigern und die Gesamtlaufzeit verkürzen kann.
Sie können AWAIT- und CANCEL-Anweisungen verwenden, um asynchrone untergeordnete Jobs für ein RESULTSET zu verwalten.
DEFAULT query
oder .:= query
Weist dem RESULTSET den Wert von
query
zu.
Beispiel:
res RESULTSET DEFAULT (SELECT col1 FROM mytable ORDER BY col1);
Für weitere Informationen zu RESULTSETs (einschließlich vollständiger Beispiele) finden Sie unter Verwenden von RESULTSETs.
Syntax der Ausnahmedeklaration¶
Verwenden Sie die folgende Syntax, um eine Ausnahme zu deklarieren.
<exception_name> EXCEPTION [ ( <exception_number> , '<exception_message>' ) ] ;
Wobei:
exception_name
Der Name, den die Ausnahme erhalten soll.
exception_number
Eine Nummer zur eindeutigen Identifizierung der Ausnahme. Die Zahl muss eine ganze Zahl (Integer) zwischen -20.000 und -20.999 sein. Die Nummer sollte nicht für eine andere Ausnahme verwendet werden, die gleichzeitig verwendet wird.
Standardeinstellung: -20.000
exception_message
Eine Meldung zur Beschreibung der Ausnahme. Die Meldung darf keine doppelten Anführungszeichen enthalten.
Standard: leere Zeichenfolge.
Beispiel:
exception_could_not_create_table EXCEPTION (-20003, 'ERROR: Could not create table.');
Weitere Informationen zu Ausnahmen (einschließlich vollständiger Beispiele) finden Sie unter Behandeln von Ausnahmen.
Beispiele¶
In diesem Beispiel wird eine Variable namens profit
zur Verwendung in einem anonymen Snowflake Scripting-Block deklariert:
DECLARE
profit number(38, 2) DEFAULT 0.0;
BEGIN
LET cost number(38, 2) := 100.0;
LET revenue number(38, 2) DEFAULT 110.0;
profit := revenue - cost;
RETURN profit;
END;
Hinweis: Wenn Sie SnowSQL, die Classic Console oder die execute_stream
- oder execute_string
-Methode im Python-Konnektor-Code verwenden, benutzen Sie stattdessen das folgende Beispiel (siehe Verwenden von Snowflake Scripting in SnowSQL, in der Classic Console und im Python-Konnektor):
EXECUTE IMMEDIATE
$$
DECLARE
profit number(38, 2) DEFAULT 0.0;
BEGIN
LET cost number(38, 2) := 100.0;
LET revenue number(38, 2) DEFAULT 110.0;
profit := revenue - cost;
RETURN profit;
END;
$$
;
Weitere Beispiele für die Deklaration von Variablen, Cursor, RESULTSETs und Ausnahmen finden Sie unter: