- 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>' )
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>'
Die Werte
DATABASE_NAME
,SCHEMA_NAME
undOBJECT_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 | +---------------+-------------+-----------+--------------------------+------------------------+------------------------+------------------------+