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::

LET

Syntax

DECLARE
  { <variable_declaration> | <cursor_declaration> | <resultset_declaration> | <exception_declaration> };
  [{ <variable_declaration> | <cursor_declaration> | <resultset_declaration> | <exception_declaration> }; ... ]
Copy

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>]
Copy

Wobei:

variable_name

Der Name der Variablen. Der Name muss den Snowflake-Regeln für Bezeichner folgen (siehe unter Objektbezeichner).

type

SQL-Datentyp

DEFAULT expression oder . := expression

Weist der Variablen den Wert von expression zu. Wenn sowohl der Typ type als auch der Ausdruck expression angegeben sind, muss der Ausdruck einen Datentyp ergeben, der mit dem angegebenen type-Wert übereinstimmt oder implizit in diesen umgewandelt werden kann.

Beispiel:

profit NUMBER(38, 2) := 0;
Copy

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>
Copy

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;
Copy

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 | := } ( <query> ) ] ;
Copy

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).

DEFAULT query oder . := query

Weist dem RESULTSET den Wert von query zu.

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>' ) ] ;
Copy

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.');
Copy

Weitere Informationen zu Ausnahmen (einschließlich vollständiger Beispiele) finden Sie unter Behandeln von Ausnahmen.

Beispiele

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;
Copy

Hinweis: Wenn Sie SnowSQL oder die klassische Weboberfläche verwenden, benutzen Sie stattdessen dieses Beispiel (siehe Verwenden von Snowflake Scripting in SnowSQL und über die klassische Weboberfläche):

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;
$$
;
Copy