Kategorien:

Tabellenfunktionen (Objektmodellierung)

GET_OBJECT_REFERENCES

Gibt eine Liste der Objekte zurück, auf die ein angegebenes Objekt verweist. Die Eingabe ist derzeit auf den Namen einer Ansicht beschränkt.

Die folgende Tabelle gibt an, welche Typen von Datenbankobjekten derzeit in der Ausgabe zurückgegeben werden:

Objekttyp

Zurückgabe in Ausgabe?

Tabellen

Ja

Ansichten (einschließlich sicherer Ansichten)

Ja

Materialisierte Ansichten

Nein

Benannte Stagingbereiche (intern oder extern)

Nein

Streams

Nein

Benutzerdefinierte Funktion (UDF) / Benutzerdefinierte Tabellenfunktion (UDTF)

Nein

Syntax

GET_OBJECT_REFERENCES(
  DATABASE_NAME => '<string>'
  , SCHEMA_NAME => '<string>'
  , OBJECT_NAME => '<string>' )
Copy

Argumente

DATABASE_NAME => 'string'

Name der Datenbank, in der sich das Schema und das Objekt befinden.

SCHEMA_NAME => 'string'

Name des Schemas, in dem sich das Objekt befindet.

OBJECT_NAME => 'string'

Name des Objekts. Derzeit beschränkt auf den Namen einer Ansicht (sicher oder nicht sicher).

Rückgabewerte

Die Funktion gibt die folgenden Spalten zurück:

Spaltenname

Datentyp

Beschreibung

DATABASE_NAME

TEXT

Name der Datenbank, die das abgefragte Objekt enthält.

SCHEMA_NAME

TEXT

Name des Schemas, das das abgefragte Objekt enthält.

OBJECT_NAME

TEXT

Name des abgefragten Objekts.

REFERENCED_DATABASE_NAME

TEXT

Name der Datenbank, die ein Objekt enthält, auf das das abgefragte Objekt verweist.

REFERENCED_SCHEMA_NAME

TEXT

Name der Datenbank, die ein Objekt enthält, auf das das abgefragte Objekt verweist.

REFERENCED_OBJECT_NAME

TEXT

Name eines Objekts, auf das das abgefragte Objekt verweist.

REFERENCED_OBJECT_TYPE

TEXT

Objekttyp, der in der Spalte REFERENCED_OBJECT_NAME angegeben ist. Die Werte umfassen TABLE oder VIEW.

Nutzungshinweise

  • Diese Funktion erfordert folgende Berechtigungen:

    • SELECT für die Ansicht. Um Referenzen für eine Ansicht zu erhalten, muss die verwendete Rolle oder eine Rolle, die der verwendeten Rolle zugewiesen wurde, die SELECT-Berechtigung für die Ansicht haben. Weitere Informationen dazu finden Sie unter Berechtigungen von Tabellen und Berechtigungen von Ansichten.

    • OWNERSHIP für die sichere Ansicht. Wenn die Abhängigkeitskette auf eine sichere Ansicht verweist, muss die verwendete Rolle oder eine der verwendeten Rolle zugewiesene Rolle die OWNERSHIP-Berechtigung für die sichere Ansicht haben. Andernfalls gibt Snowflake folgende Fehlermeldung zurück:

      Insufficient privileges to operate on view '<view_name>'
      
      Copy
  • Die Werte DATABASE_NAME, SCHEMA_NAME und OBJECT_NAME müssen in einfache Anführungszeichen gesetzt werden. Wenn ein Name Leerzeichen, gemischte Groß- und Kleinbuchstaben oder Sonderzeichen enthält, muss er außerdem in doppelte und dann in einfache Anführungszeichen gesetzt werden (z. B. '"My DB"' vs. 'mydb').

  • Wenn die Ansicht auf Stagingbereiche, UDFs oder materialisierte Ansichten verweist, gibt diese Funktion einen Fehler zurück, anstatt eine Liste der referenzierten Tabellen und Ansichten zurückzugeben.

Beispiele

Geben Sie die Referenzliste für eine Ansicht zurück:

-- create a database
create or replace database ex1_gor_x;
use database ex1_gor_x;
use schema PUBLIC;

-- create a set of tables
create or replace table x_tab_a (mycol int not null);
create or replace table x_tab_b (mycol int not null);
create or replace table x_tab_c (mycol int not null);

-- create views with increasing complexity of references
create or replace view x_view_d as
select * from x_tab_a
join x_tab_b
using ( mycol );

create or replace view x_view_e as
select x_tab_b.* from x_tab_b, x_tab_c
where x_tab_b.mycol=x_tab_c.mycol;

--create a second database
create or replace database ex1_gor_y;
use database ex1_gor_y;
use schema PUBLIC;

-- create a table in the second database
create or replace table y_tab_a (mycol int not null);

-- create more views with increasing levels of references
create or replace view y_view_b as
select * from ex1_gor_x.public.x_tab_a
join y_tab_a
using ( mycol );

create or replace view y_view_c as
select b.* from ex1_gor_x.public.x_tab_b b, ex1_gor_x.public.x_tab_c c
where b.mycol=c.mycol;

create or replace view y_view_d as
select * from ex1_gor_x.public.x_view_e;

create or replace view y_view_e as
select e.* from ex1_gor_x.public.x_view_e e, y_tab_a
where e.mycol=y_tab_a.mycol;

create or replace view y_view_f as
select e.* from ex1_gor_x.public.x_view_e e, ex1_gor_x.public.x_tab_c c, y_tab_a
where e.mycol=y_tab_a.mycol
and e.mycol=c.mycol;

-- retrieve the references for the last view created
select * from table(get_object_references(database_name=>'ex1_gor_y', schema_name=>'public', object_name=>'y_view_f'));

+---------------+-------------+-----------+--------------------------+------------------------+------------------------+------------------------+
| DATABASE_NAME | SCHEMA_NAME | VIEW_NAME | REFERENCED_DATABASE_NAME | REFERENCED_SCHEMA_NAME | REFERENCED_OBJECT_NAME | REFERENCED_OBJECT_TYPE |
|---------------+-------------+-----------+--------------------------+------------------------+------------------------+------------------------|
| EX1_GOR_Y     | PUBLIC      | Y_VIEW_F  | EX1_GOR_Y                | PUBLIC                 | Y_TAB_A                | TABLE                  |
| EX1_GOR_Y     | PUBLIC      | Y_VIEW_F  | EX1_GOR_X                | PUBLIC                 | X_TAB_B                | TABLE                  |
| EX1_GOR_Y     | PUBLIC      | Y_VIEW_F  | EX1_GOR_X                | PUBLIC                 | X_TAB_C                | TABLE                  |
| EX1_GOR_Y     | PUBLIC      | Y_VIEW_F  | EX1_GOR_X                | PUBLIC                 | X_VIEW_E               | VIEW                   |
+---------------+-------------+-----------+--------------------------+------------------------+------------------------+------------------------+
Copy