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_name
がnull
の場合、このプロシージャはすべてのデータベースのすべてのビューのフィールドを返します。input_view_name
がnull
の場合、このプロシージャはinput_database_name
のすべてのビューのフィールドを返します。
このプロシージャは、以下のフィールドを返します。
database_name
: フィールドのビューが属すデータベースの名前。view_name
: ビューの名前。column_name
: ビューのフィールドの名前。column_vdp_type
: Virtual DataPort での型の名前 (int、text、float など)。column_sql_type
: フィールドの「ソース型プロパティ」内のフィールド型の名前。たとえば、VARCHAR
、NCHAR
、INTEGER
、BIGINT
などです。これらは、JDBC API のクラス java.sql.Types に定義されている定数の名前です。
column_sql_type_code
: フィールドの「ソース型プロパティ」内のフィールドの型を表す整数。このフィールドの値は、JDBC API のクラス java.sql.Types に定義されています。たとえば、
INT
=4
、VARCHAR
=12
などです。column_size
: この意味は、フィールドの型によって異なります。text
型のフィールドの場合、これはフィールドの最大長を示します。数値型の場合は最大精度です。小数部のない値 (
int
とlong
) の場合、この数値は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 です。column_vdp_type_database
: 列の型が複合型に定義されているデータベース。型がプリミティブ (「text」「long」など) の場合はnull
です。
必要な権限
このプロシージャの結果は、それを実行するユーザーに付与されている権限によって異なります。ユーザーが管理者ユーザーではない場合、このプロシージャはそのユーザーが 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」でワイルドカード「%」が使用されているためです。