カテゴリ:

テーブル関数 (オブジェクトモデリング)

GET_OBJECT_REFERENCES

指定されたオブジェクトが参照するオブジェクトのリストを返します。現在、入力はビューの名前に制限されています。

次の表は、現在出力で返されるデータベースオブジェクト型を示しています。

オブジェクト型

出力で返しますか?

テーブル

はい

ビュー(安全なビューを含む)

はい

マテリアライズドビュー

いいえ

名前付きステージ(内部または外部)

いいえ

ユーザー定義関数(UDF)/ユーザー定義テーブル関数(UDTF)

いいえ

構文

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

引数

DATABASE_NAME => '文字列'

スキーマとオブジェクトが存在するデータベースの名前です。

SCHEMA_NAME => '文字列'

オブジェクトが存在するスキーマの名前です。

OBJECT_NAME => '文字列'

オブジェクトの名前です。現在、ビューの名前に制限されています(安全または安全でない)。

戻り値

この関数は、次の列を返します。

列名

データ型

説明

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_NAMESCHEMA_NAME、および OBJECT_NAME の値は一重引用符で囲む必要があります。また、これらの名前にスペース、大/小文字混合、または特殊文字が含まれている場合、名前は二重引用符を一重引用符で囲む必要があります(例: '"My DB"''mydb')。

  • 指定されたオブジェクトが安全なビューを参照し、クエリを実行するロールがセキュアビューを所有していない(セキュアビューに対する OWNERSHIP権限を持たない)場合、クエリは次のエラーを返します。

    091502: Insufficient privileges to access the referenced secure view {0}
    
  • ビューがステージ、 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                   |
+---------------+-------------+-----------+--------------------------+------------------------+------------------------+------------------------+