SET WEG

Gilt für:Haken markiert ja Databricks SQL Haken markiert ja Databricks Runtime 19 und höher

Der Pfad ist die geordnete Liste von Schemata, die Azure Databricks durchsucht, wenn eine Abfrage oder DML-Anweisung auf eine Tabelle, Ansicht oder Funktion ohne Katalog- und Schema-Qualifikation verwiesen. Der unqualifizierte Subjekt einer DDL-Anweisung ist current_catalog.current_schema, keine Pfadsuche, also CREATE TABLE t wird im aktuellen Schema erstellt t . Wie der Pfad auf Abfragen in DDL-Anweisungen und auf persistente Ansichten angewendet wird, siehe Tabelle und Ansichtsauflösung. Für routinemäßige Körper siehe Funktion und Prozedurauflösung.

Syntax

SET PATH = path_element [, ...]

path_element
  { DEFAULT_PATH |
    SYSTEM_PATH |
    CURRENT_SCHEMA |
    PATH |
    schema_name }

Parameter

  • DEFAULT_PATH

    Ein Schlüsselwort, das auf den PATH-Konfigurationsparameter erweitert wird, der der Arbeitsbereich-Standard ist, den neue Sitzungen erben. Wenn der Parameter nicht überschrieben wurde, ist die Expansion .system.session, system.builtin, system.ai, CURRENT_SCHEMA

  • SYSTEM_PATH

    Ein Schlüsselwort, das sich auf die vom System bereitgestellten Schemata erweitert: system.builtin, system.ai.

  • CURRENT_SCHEMA

    Eine virtuelle Schemareferenz, die zur Gebrauchszeit auf den aktuellen Katalog und das aktuelle Schema (current_catalog().current_schema()) aufgelöst wird. Die Erweiterung folgt auf Änderungen, die während USE CATALOGUSE SCHEMA der Sitzung vorgenommen wurden.

  • PATH

    Ein Schlüsselwort, das auf den aktuellen Sitzungspfad erweitert wird. Nutze es, um den Weg zu verlängern, ohne seinen Inhalt zu wiederholen.

  • schema_name

    Ein zweiteiliger Name (catalog.schema) ist erforderlich. Namen mit mehr als zwei Teilen sind erlaubt. Ein einteiliger Name erhebt INVALID_SQL_PATH_SCHEMA_REFERENCE.

    Katalog und Schema müssen zum Zeitpunkt der Ausführung SET PATHnicht existieren. Die Namensauflösung überspringt fehlende Einträge und fährt mit dem nächsten Pfadelement fort.

Description

Die folgenden Regeln regeln, welche Pfadelemente SET PATH akzeptieren und wie der resultierende Pfad die Namensauflösung beeinflusst.

  • Duplikate: Doppelpfadelemente sind nicht erlaubt. Nach der Keyword-Erweiterung steigen Duplikate DUPLICATE_SQL_PATH_ENTRY.
  • Systemschemata:system.builtin und system.ai enthalten integrierte skalare, tabellen- und KI-Funktionen. system.session enthält sitzungsbezogene Objekte wie temporäre Variablen, temporäre Funktionen und temporäre Ansichten. Es wird im Allgemeinen nicht empfohlen, den Weg wegzulassen system.builtin .
  • Weggelassene Schemata: Unqualifizierte Namen lösen sich nur gegen Schemata auf dem Pfad auf. Wenn du CURRENT_SCHEMA, qualifizierst du persistente Objekte im aktuellen Schema. Wenn Sie diese Funktionen weglassen system.builtin oder system.ai, qualifizieren, zum Beispiel system.builtin.abs. Wenn du weglässt system.session, werden unqualifizierte temporäre Ansichten, temporäre Funktionen und Sitzungsvariablen nicht gefunden.
  • Ansichten und Routinen: Persistente Ansichten, benutzerdefinierte SQL-Funktionen und SQL SECURITY DEFINER Prozeduren erfassen den Pfad und CREATE lösen unqualifizierte Namen in ihren Körpern gegen diesen erfassten Pfad auf, nicht gegen den Sitzungspfad des Aufrufers. Ein SQL SECURITY DEFINER Verfahren lässt system.session den eingenommenen Pfad weg. Ein SQL SECURITY INVOKER Verfahren verwendet den Live-Pfad des Anrufers. Siehe Gefangener Pfad.
  • Inspektion des Pfades: SET PATH; Der Pfad wird nicht gedruckt. Benutze current_path.

Examples

Führe die folgenden Anweisungen der Reihe nach aus, da spätere Anweisungen auf dem Pfad aufbauen, den die vorherigen gesetzt haben.

-- Restore the workspace default.
> SET PATH = DEFAULT_PATH;
> SELECT current_path();
  system.session,system.builtin,system.ai,main.default

-- Restrict the PATH to only the system-provided schemas.
> SET PATH = SYSTEM_PATH;
> SELECT current_path();
  system.builtin,system.ai

-- Append a schema to the existing PATH without restating it.
> SET PATH = PATH, libraries.pgsql;
> SELECT current_path();
  system.builtin,system.ai,libraries.pgsql

-- Put the current schema ahead of the system schemas so that user-defined
-- functions shadow built-in functions of the same name.
> SET PATH = CURRENT_SCHEMA, PATH;
> SELECT current_path();
  main.default,system.builtin,system.ai,libraries.pgsql

Die folgenden Anweisungen scheitern und ändern den Pfad nicht.

-- A single-part schema name is rejected.
> SET PATH = my_schema;
  [INVALID_SQL_PATH_SCHEMA_REFERENCE]

-- A duplicate path element raises an error after expansion.
> SET PATH = SYSTEM_PATH, system.builtin;
  [DUPLICATE_SQL_PATH_ENTRY]