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_namenull の場合、このプロシージャはすべてのデータベースのすべてのビューのフィールドを返します。

input_view_namenull の場合、このプロシージャは input_database_name のすべてのビューのフィールドを返します。

出力スキーマには以下のフィールドがあります。

  • database_name: フィールドのビューが属すデータベースの名前。

  • view_name: ビューのフィールドの名前。

  • view_type: ビューのタイプ。

    • 0: 基本ビュー。

    • 1: 派生ビュー。

  • column_name: フィールドの名前。

  • column_type_name: フィールドの「ソース型プロパティ」内のフィールド型の名前。たとえば、 VARCHARNCHARINTEGERBIGINT などです。

    これらは、JDBC API のクラス java.sql.Types に定義されている定数の名前です。

  • column_type: フィールドの型を表す数字。

    このフィールドの値は、JDBC API のクラス java.sql.Types に定義されています。たとえば、 INT = 4VARCHAR = 12 などです。

  • column_type_precision: この意味は、フィールドの型によって異なります。

    • text 型のフィールドの場合、これはフィールドの最大長を示します。

    • 数値型の場合、これは精度を示します。このため、 int および long フィールドの場合、この数字は 0 です。

  • column_type_length: このフィールドの値の最大長 (バイト単位)。

  • column_type_scale: このフィールドの値が格納できる小数部の桁数。

必要な権限

このプロシージャは、ユーザーが 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