GET_VIEW_COLUMNS

ストアドプロシージャ GET_VIEW_COLUMNS は、ビューのフィールドに関する情報を返します。この情報には、フィールドの型、長さ、精度 (数値の場合) などが含まれます。

このプロシージャは、各ビューのフィールドごとに 1 つの行を返します。

ビューとデータベースの一方または両方でフィルターできます。

このプロシージャは、 CATALOG_METADATA_VIEWS と非常によく似ており、内部の動作も似ています。唯一の違いは、これらは異なるフィールドを返すことと、「GET_VIEW_COLUMNS」の「input_view_name」は LIKE 演算子で評価されることです。

構文

GET_VIEW_COLUMNS (
      <input_database_name : text>
    , <input_view_name : text> )
  • input_database_name: データベースの名前。

  • input_view_name: フィールドを取得するビューの名前。

  • このプロシージャは、等号の代わりに LIKE 演算子を使用して input_view_name パラメーターを評価します。そのため、このパラメーターの値には、LIKE とともに使用するワイルドカード演算子 (%_) を使用できます。

  • input_database_name および input_view_namenull の場合、このプロシージャはすべてのデータベースのすべてのビューのフィールドを返します。

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


このプロシージャは、以下のフィールドを返します。

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

  • view_name: ビューの名前。

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

  • column_vdp_type: Virtual DataPort での型の名前 (int、text、float など)。

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

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

  • column_sql_type_code: フィールドの「ソース型プロパティ」内のフィールドの型を表す整数。

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

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

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

    • 数値型の場合は最大精度です。小数部のない値 (intlong) の場合、この数値は 0 です。

  • column_decimals: decimal 型のフィールドの場合、これはフィールドの「ソース型プロパティ」の「Type decimals」の値です。その他の型のフィールドの場合は 0 です。

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

  • column_is_primary_key: このフィールドがビューのプライマリキーのフィールドの 1 つである場合は true、そうでない場合は false。

  • column_is_nullable: このフィールドで null 値が許可される場合は true、そうでない場合は false。

  • column_remarks: フィールドの説明。フィールドに説明が存在しない場合、この値は null です。

  • column_is_autoincrement: このフィールドの値が増分的に生成される場合は true、そうでない場合は false。

  • column_is_generated: フィールドが自動生成される場合は true、そうでない場合は false。

  • ordinal_position: フィールドの順序位置を表す整数。

    ビューの最初のフィールドの場合、この値は 1 です。

必要な権限

このプロシージャの結果は、それを実行するユーザーに付与されている権限によって異なります。ユーザーが管理者ユーザーではない場合、このプロシージャはそのユーザーが Metadata 権限を持っているプロシージャに関する情報のみを返すことに注意してください。その意味は以下のとおりです。

  • ユーザーが管理者の場合、このプロシージャはすべてのデータベースのすべてのビューに関する情報を返します。

  • このプロシージャは、ユーザーがローカル管理者であるデータベースのビューに関する情報を返します。

  • このプロシージャは、ユーザーが Connect 権限および Metadata 権限を持っているデータベースのビューに関する情報を返します。

このプロシージャは、「権限エラー」を返しません。たとえば、以下の例を考えてみます。

  • ユーザーが SELECT * FROM GET_PROCEDURE_COLUMNS() (すべてのデータベースのすべてのビューのすべてのフィールドに関する情報を取得) を実行します。

  • このユーザーは、 testing データベースに対する Connect 権限と Metadata 権限のみを持っています。

このシナリオでは、このプロシージャは testing データベースのビューに関する情報のみを返し、他のデータベースのビューに関する情報は返しません。

SELECT view_name, column_name, column_vdp_type, column_sql_type, column_is_primary_key
FROM GET_VIEW_COLUMNS()
WHERE input_database_name = 'chinook'
    AND input_view_name = '%invoice%'

結果は以下のとおりです。

view_name

column_name

column_vdp_type

column_sql_type

column_is_primary_key

invoiceline

InvoiceLineId

int

INTEGER

true

invoiceline

InvoiceId

int

INTEGER

false

invoiceline

TrackId

int

INTEGER

false

invoiceline

UnitPrice

decimal

DECIMAL

false

invoiceline

Quantity

int

INTEGER

false

invoice

InvoiceId

int

INTEGER

true

invoice

CustomerId

int

INTEGER

false

invoice

InvoiceDate

date

TIMESTAMP

false

invoice

BillingAddress

text

VARCHAR

false

invoice

BillingCity

text

VARCHAR

false

invoice

BillingState

text

VARCHAR

false

invoice

BillingCountry

text

VARCHAR

false

invoice

BillingPostalCode

text

VARCHAR

false

invoice

Total

decimal

DECIMAL

false

結果には、ビュー「invoiceline」と「invoice」のフィールドが含まれます。これは、入力パラメーター「input_view_name」でワイルドカード「%」が使用されているためです。