- 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¶
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 das angegebene Objekt innerhalb der Abhängigkeitskette (einschließlich Ansichten in Information Schema-, Account Usage- und Organization Usage-Schemas) auf eine sichere Ansicht verweist und die Rolle, die die Abfrage ausführt, nicht Eigentümer der sicheren Ansicht ist (d. h. nicht über die Berechtigung OWNERSHIP für die sichere Ansicht verfügt), gibt die Abfrage den folgenden Fehler zurück:
Insufficient privileges to operate on view '<view_name>'
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 | +---------------+-------------+-----------+--------------------------+------------------------+------------------------+------------------------+