CATALOG_METADATA_VIEWS¶
説明
ストアドプロシージャ CATALOG_METADATA_VIEWS
は、ビューのフィールドの情報を返します。この情報には、フィールドの型、精度 (数値の場合) などが含まれます。
ビューとデータベースの一方または両方でフィルタできます。
注釈
このプロシージャの代わりに CATALOG_VDP_METADATA_VIEWS を使用することをお勧めします。その方がより詳しい情報が返されるためです。つまり、 CATALOG_VDP_METADATA_VIEWS
は、フィールドの説明に加えて、フィールドの型の名前を提供する column_vdp_type_name
フィールドを返します。
構文
CATALOG_METADATA_VIEWS (
input_database_name : text
, input_view_name : text
)
input_database_name
: データベースの名前。input_view_name
: フィールドを取得するビューの名前。
このプロシージャは、各ビューのフィールドごとに 1 つの行を返します。
input_database_name
および input_view_name
が null
の場合、このプロシージャはすべてのデータベースのすべてのビューのフィールドを返します。
input_view_name
が null
の場合、このプロシージャは input_database_name
のすべてのビューのフィールドを返します。
出力スキーマには以下のフィールドがあります。
database_name
: フィールドのビューが属すデータベースの名前。view_name
: ビューのフィールドの名前。view_type
: ビューのタイプ。0
: 基本ビュー。1
: 派生ビュー。
column_name
: フィールドの名前。column_type_name
: フィールドの「ソース型プロパティ」内のフィールド型の名前。たとえば、VARCHAR
、NCHAR
、INTEGER
、BIGINT
などです。これらは、JDBC API のクラス java.sql.Types に定義されている定数の名前です。
column_type
: フィールドの型を表す数字。このフィールドの値は、JDBC API のクラス java.sql.Types に定義されています。たとえば、
INT
=4
、VARCHAR
=12
などです。column_type_precision
: この意味は、フィールドの型によって異なります。text
型のフィールドの場合、これはフィールドの最大長を示します。数値型の場合、これは精度を示します。このため、
int
およびlong
フィールドの場合、この数字は0
です。
column_type_length
: このフィールドの値の最大長 (バイト単位)。column_type_scale
: このフィールドの値が格納できる小数部の桁数。column_vdp_type_database
: 列の型が複合型に定義されているデータベース。型がプリミティブ (「text」「long」など) の場合はnull
です。
必要な権限
このプロシージャは、ユーザーが Metadata 権限を持っているビューに関する情報のみを返します。その意味は以下のとおりです。
ユーザーが管理者の場合、このプロシージャはすべてのデータベースのすべてのビューに関する情報を返します。
このプロシージャは、ユーザーがローカル管理者であるデータベースのビューに関する情報を返します。
このプロシージャは、ユーザーが Connect 権限および Metadata 権限を持っているデータベースのビューに関する情報を返します。
このプロシージャは、「権限エラー」を返しません。たとえば、以下の例を考えてみます。
ユーザーが
SELECT * FROM CATALOG_METADATA_VIEWS()
(すべてのデータベースのすべてのビューのすべてのフィールドに関する情報を取得) を実行します。このユーザーは、
testing
データベースに対する Connect 権限と Metadata 権限のみを持っています。
このシナリオでは、このプロシージャは testing
データベースのビューに関する情報のみを返し、他のデータベースのビューに関する情報は返しません。
例
SELECT column_name, column_type_name, column_type_length
FROM CATALOG_METADATA_VIEWS()
WHERE input_database_name='customer360' and input_view_name = 'invoice';
結果は以下のとおりです。
column_name |
column_type_name |
column_type_length |
---|---|---|
InvoiceId |
INTEGER |
11 |
CustomerId |
INTEGER |
11 |
InvoiceDate |
TIMESTAMP |
23 |
BillingAddress |
VARCHAR |
70 |
BillingCity |
VARCHAR |
40 |
BillingState |
VARCHAR |
40 |
BillingCountry |
VARCHAR |
40 |
BillingPostalCode |
VARCHAR |
10 |
Total |
DECIMAL |
12 |