GET_VIEWS¶
説明
ストアドプロシージャ GET_VIEWS
は、ビューに関する情報を返します。返される結果を複数のパラメータ (ビュー名やビュータイプなど) でフィルタできます。各行は、ビューを表します。
ビューだけではなく、任意のタイプのエレメントに関する情報を取得する場合は、 GET_ELEMENTS プロシージャを使用します。
構文
GET_VIEWS (
input_database_name : text
, input_name : text
, input_user_creator : text
, input_last_user_modifier : text
, input_init_create_date : date
, input_end_create_date : date
, input_init_last_modification_date : date
, input_end_last_modification_date : date
, <input_view_type>
, <input_swap_active>
, <input_cache_status>
, input_description : text
, input_retrieve_invalid_views_only: boolean
)
<input_view_type> ::=
0 // Base views
| 1 // Derived views
| 2 // Interface views
| 3 // Materialized tables
<input_swap_active> ::=
0 // Swapping status is "Default"
| 1 // Swapping status is "On"
| 2 // Swapping status is "Off"
<input_cache_status> ::=
0 // Cache mode is "Off"
| 1 // Cache mode is "Partial exact"
| 2 // Cache mode is "Partial"
| 3 // Cache mode is "Full"
| 4 // Cache mode is "Partial exact preload"
| 5 // Cache mode is "Partial preload"
このプロシージャを
CALL
で呼び出し、パラメータでフィルタしない場合は、null
を渡します。このプロシージャは、AND 条件を使用して入力パラメータを評価します。たとえば、
input_database
、input_name
、およびinput_description
に値を渡すと、このプロシージャは、このデータベース かつ この名前の、 かつ この説明を含むビューを検索して返します。このプロシージャは、等号の代わりに LIKE 演算子を使用して以下のパラメータを評価します。
input_name
input_user_creator
input_last_user_modifier
input_description
つまり、これらのパラメータの値では、LIKE とともに使用するワイルドカード演算子 (
%
と_
) を使用できます。説明による検索では大文字と小文字は区別されません。input_init_create_date
およびinput_end_create_date
、またはinput_init_last_modification_date
およびinput_end_last_modification_date
の値を指定した場合、このプロシージャはこれら 2 つの期間に作成されたビューを返します。たとえば、input_init_create_date
およびinput_end_create_date
の値を指定した場合、このプロシージャはこの 2 つの日付の間に作成されたビューを返します。input_init_create_date
がnull
の場合、このプロシージャはinput_end_create_date
より前に作成されたすべてのビューを返します。input_end_create_date
がnull
の場合、このプロシージャはinput_init_create_date
より後に作成されたすべてのビューを返します。input_init_last_modification_date
およびinput_end_last_modification_date
で検索する場合も同じように機能します。
このプロシージャは、以下のフィールドを返します。
database_name
: ビューが属すデータベースの名前。name
: ビューの名前。type
: この値は常に「view」です。user_creator
: ビューの所有者。last_user_modifier
: ビューを最後に変更したユーザー。ビューが一度も変更されていない場合、この値はuser_creator
と同じです。create_date
: ビューが作成された日付。last_modification_date
: ビューが最後に変更された日付。ビューが一度も変更されていない場合、この値はcreate_date
と同じです。description
: ビューの説明。view_type
: 想定される値は以下のとおりです。0
: 基本ビュー1
: 派生ビュー2
: インターフェイスビュー3
: マテリアライズドテーブル
swap_active
: 想定される値は以下のとおりです。0
: スワップステータスが「Default」1
: スワップステータスが「On」2
: スワップステータスが「Off」
cache_active
: 想定される値は以下のとおりです。0
: キャッシュモードが「Off」1
: キャッシュモードが「Partial exact」2
: キャッシュモードが「Partial」3
: キャッシュモードが「Full」4
: キャッシュモードが「Partial exact preload」5
: キャッシュモードが「Partial preload」
folder
: ビューのフォルダ (小文字)。ビューがフォルダに格納されていない場合、この値は/
です。view_status
: 可能な値はok
、interface_not_implemented
、invalid
です。
必要な権限
このプロシージャの結果は、それを実行するユーザーに付与されている権限によって異なります。ユーザーが管理者ユーザーではない場合、このプロシージャはそのユーザーが Metadata 権限を持っているプロシージャに関する情報のみを返すことに注意してください。その意味は以下のとおりです。
ユーザーが管理者の場合、このプロシージャはすべてのビューに関する情報を返します。
ユーザーが 1 つ以上のデータベースの管理者の場合、このプロシージャはそのデータベースのすべてのビューに関する情報を返します。
このプロシージャは、ユーザーが Metadata 権限を持っているすべてのビューに関する情報を返します。
例
例 1
SELECT *
FROM GET_VIEWS()
WHERE input_database_name = 'customer_report' AND folder = '/base views'
データベース「customer_report」の特定のフォルダ内にあるすべてのビューを取得します。 folder
はこのプロシージャの入力パラメータではありません。このため、実行エンジンは、パラメータ input_database_name
を渡してこのプロシージャを実行します。返される結果は、そのデータベース内のすべてのビューに関する情報です。次に、実行エンジンはこの結果をフィルタして、「base views」という名前のフォルダのみを返します。
例 2
SELECT view_info.database_name, name, view_info.type as view_type, user_creator AS owner, index_name, view_index.type AS index_type, ordinal_position, column_name, asc_or_desc, filter_condition
FROM GET_VIEWS() AS view_info
LEFT OUTER JOIN GET_VIEW_INDEXES() AS view_index ON view_info.database_name = view_index.input_database_name
AND view_info.name = view_index.input_view_name
WHERE view_info.input_database_name = 'customer360';
このクエリは、データベース「customer360」のすべてのビューとそのインデックス (存在する場合) を返します。このクエリには 「GET_VIEWS」と「GET_VIEW_INDEXES」の LEFT OUTER JOIN
が存在するため、インデックスのないビューも結果に追加されます。
例 3
SELECT *
FROM GET_VIEWS()
WHERE
input_database_name = 'customer_report'
AND (input_init_create_date = ADDDAY(CURRENT_DATE, -1));
昨日の午前 0 時以降に作成されたデータベース「customer_report」のすべてのビューを取得します。
例 4
SELECT *
FROM GET_VIEWS()
WHERE input_description = '%report%';
このクエリは、説明に「report」という単語が含まれているすべてのビューを返します。