- 类别:
表函数 (对象建模)
GET_OBJECT_REFERENCES¶
返回指定对象引用的对象的列表。输入当前仅限于视图的名称。
下表标识了当前在输出中返回的数据库对象类型:
对象类型 |
是否在输出中返回? |
---|---|
表 |
是 |
视图(包括安全视图) |
是 |
物化视图 |
否 |
命名暂存区(内部或外部) |
否 |
流 |
否 |
用户定义的函数 (UDF)/用户定义的表函数 (UDTF) |
否 |
语法¶
GET_OBJECT_REFERENCES(
DATABASE_NAME => '<string>'
, SCHEMA_NAME => '<string>'
, OBJECT_NAME => '<string>' )
实参¶
DATABASE_NAME => 'string'
架构和对象所在的数据库的名称。
SCHEMA_NAME => 'string'
对象所在的架构的名称。
OBJECT_NAME => 'string'
对象名称。当前仅限于(安全或不安全)视图的名称。
返回¶
该函数返回以下列:
列名称 |
数据类型 |
描述 |
---|---|---|
DATABASE_NAME |
TEXT |
包含查询对象的数据库的名称。 |
SCHEMA_NAME |
TEXT |
包含查询对象的架构的名称。 |
OBJECT_NAME |
TEXT |
查询对象的名称。 |
REFERENCED_DATABASE_NAME |
TEXT |
包含查询对象引用的对象的数据库的名称。 |
REFERENCED_SCHEMA_NAME |
TEXT |
包含查询对象引用的对象的数据库的名称。 |
REFERENCED_OBJECT_NAME |
TEXT |
查询对象引用的对象的名称。 |
REFERENCED_OBJECT_TYPE |
TEXT |
REFERENCED_OBJECT_NAME 列中标识的对象的类型。值包括 TABLE 或 VIEW。 |
使用说明¶
此函数需要以下权限:
DATABASE_NAME
、SCHEMA_NAME
和OBJECT_NAME
值必须放在单引号内。此外,如果这些名称中的任何名称包含任何空格、混合大小写字符或特殊字符,则名称必须在单引号内使用双引号(例如'"My DB"'
与'mydb'
)。如果视图引用暂存区、UDFs 或物化视图,则此函数会返回错误,而不是返回引用的表和视图的列表。
示例¶
返回视图的引用列表:
-- 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 | +---------------+-------------+-----------+--------------------------+------------------------+------------------------+------------------------+