Variablen in SQL verwenden

Bemerkung

Die Unterstützung von Variablen erfordert Projektdefinition Version 1.1.

Sie können auch Projektdateien verwenden, um Variablen zu definieren, die andere Befehle, wie z. B. snow sql, verwenden können. Im Abschnitt env der Projektdefinitionsdatei (in der Regel snowflake.yml) können Sie Variablen wie folgt definieren:

definition_version: 2
env:
  database: "dev"
  role: "eng_rl"
Copy

Nachdem Sie den Abschnitt env zur Projektdefinitionsdatei hinzugefügt haben, können Sie die Variablen an den Befehl snow sql übergeben, anstatt die Variable und den Wert in der Befehlszeile anzugeben.

Geben Sie stattdessen die Datenbank und die Rolle wie folgt in der Befehlszeile mit der Option --variable an:

snow sql \
-q "grant usage on database <% database %> to <% role %>" \
-D "database=dev" \
-D "role=eng_rl"
Copy

Sie können die im Abschnitt env definierten Variablen wie folgt angeben:

snow sql -q "grant usage on database <% ctx.env.database %> to <% ctx.env.role %>"
Copy

Sie können den Abschnitt env zusätzlich zu allen anderen Abschnitten einfügen, die Sie in die Projektdefinitionsdatei aufnehmen.

definition_version: 2
entities:
  test_function:
    type: "function"
    stage: "dev_deployment"
    artifacts: ["app/"]
    handler: "functions.hello_function"
    signature: ""
    returns: string

  hello_procedure:
    type: "procedure"
    stage: "dev_deployment"
    artifacts: ["app/"]
    handler: "procedures.hello_procedure"
    signature:
      - name: "name"
        type: "string"
    returns: string

env:
  database: "dev"
  role: "eng_rl"
Copy

Bemerkung

Wenn Ihre aktuelle Projektdefinitionsdatei definition_version: 1 verwendet, müssen Sie sie auf definition_version: 1.1 aktualisieren, um die Vorteile des Variablen-Features nutzen zu können. Wenn Sie den Wert nicht ändern, ignoriert Snowflake CLI den Abschnitt env, aber die anderen Typen von Projekten (in diesem Beispiel snowpark) funktionieren weiterhin wie erwartet.

Sie können jede in der Projektdefinitionsdatei snowflake.yml definierte Variable überschreiben, indem Sie eine Shell-Umgebungsvariable mit demselben Namen setzen (Groß-/Kleinschreibung wird beachtet). Um den im Beispiel definierten Wert database zu überschreiben, können Sie z. B. den folgenden Shell-Befehl ausführen:

export database="other"
Copy

Weitere Informationen zu env-Variablen finden Sie unter Speichern von Variablen in der snowflake.yml-Projektdefinitionsdatei.