6 メタデータ
この章では、結果セットまたはデータベースに関するメタデータの取出し方法を説明します。
ここでは、次の項目について説明します。
メタデータの概要
データベース・オブジェクトには、内容を説明する様々な属性があります。DESCRIBE
操作を行うと特定のスキーマ・オブジェクトに関する情報を獲得できます。その結果には、Metadata
クラスの各種のメソッドに対して引数としてオブジェクト属性を渡すことで、Metadata
クラスのオブジェクトとしてアクセスできます。
DESCRIBE
操作を明示的に実行できる対象は、データベース全体、ResultSet
クラスに含まれている列の型とプロパティ、または、スキーマ・オブジェクトとサブスキーマ・オブジェクト、たとえば、表、型、順序、ビュー、型属性、列、プロシージャ、型メソッド、引数、関数、コレクション、結果、パッケージ、シノニム、およびリストなどです。
検索する属性の型を指定する必要があります。MetaData
クラスのgetAttributeCount()
、getAttributeId()
およびgetAttributeType()
の各メソッドを使用すると、使用可能な各属性をスキャンできます。
すべてのDESCRIBE
情報は、その情報に対する最後の参照が削除されるまでキャッシュされます。この方法によって、開放されているDESCRIBE
情報に、ユーザーが間違えてアクセスすることがなくなります。
明示的な記述の場合にはConnection
クラスのgetMetaData()
メソッドをコールすることでメタデータを取得し、結果セット列のメタデータを取得するにはResultSet
クラスのgetColumnListMetaData()
メソッドをコールします。どちらのメソッドも説明情報とともにMetaData
オブジェクトを返します。MetaData
クラスは、この情報にアクセスするためのget
xxx
()
メソッドを提供します。
関連項目:
DESCRIBE
操作の実行時には、次の問題に注意してください。
-
ATTR_TYPECODE
では、CREATE
TYPE
文で型を新規作成したときに指定した型を表す型コードが戻されます。これらの型コードは、TypeCode
列挙型で、OCCI_TYPECODE
定数によって表されます。内部PL/SQL型(ブール、索引付きの表)はサポートされていません。 -
ATTR_DATA_TYPE
では、データベース列のデータ型を表す型が戻されます。これらの値は、Type
列挙型です。たとえば、LONG
型では、OCCI_SQLT_LNG
型が戻されます。
ID列のメタデータの使用方法
Oracle Database Release 12c以降、列はID列として作成できます。新しい行を表に挿入すると、これらの列の値が自動的に生成されます。
この機能により、新しいColumnAttrId enum
がMetaDataクラス(表13-27を参照)に追加され、オーバーロードされた形式のgetBoolean()メソッドがMetaDataクラスに追加されました。例6-1に、この機能の使用方法を示しています。
詳細は、『Oracle Database SQL翻訳および移行ガイド』および『Oracle Database SQL言語リファレンス』を参照してください。また、『Oracle Databaseリファレンス』の次の変更内容も参照してください。
-
ビュー
ALL_TAB_COLUMNS
、DBA_TAB_COLUMNS
,USER_TAB_COLUMNS
、ALL_TAB_COLS
,DBA_TAB_COLS
およびUSER_TAB_COLS
の新しいIDENTITY_COLUMN
列 -
ビュー
ALL_TABLES
、DBA_TABLES
およびUSER_TABLES
の新しいHAS_IDENTITY
列 -
表のID列プロパティを表示する、新しいビュー
ALL_TAB_IDENTITY_COLS
、DBA_TAB_IDENTITY_COLS
およびUSER_TAB_IDENTITY_COLS
例6-1 ID列のメタデータの使用方法
vector<MetaData> v1; MetaData metaData = conn->getMetaData(tableName); columnCount = metaData.getInt(MetaData::ATTR_NUM_COLS); cout << "Number of Columns : " << columnCount << endl; v1 = metaData.getVector(MetaData::ATTR_LIST_COLUMNS); for(int i=0; i < v1.size(); i++) { MetaData md = v1[i]; colNames[i] = md.getString(MetaData::ATTR_NAME); size[i] = md.getInt(MetaData::ATTR_DATA_SIZE); precision[i] = md.getInt(MetaData::ATTR_PRECISION); scale[i] = md.getInt(MetaData::ATTR_SCALE); if ( md.getBoolean(MetaData::ATTR_IS_NULL) ) strcpy (isnull[i], "YES"); else strcpy (isnull[i], "NO"); if (md.getBoolean(MetaData::ATTR_COL_IS_IDENTITY)) strcpy (isIdentity[i], "YES"); else strcpy (isIdentity[i], "NO"); if ( md.getBoolean(MetaData::ATTR_COL_IS_GEN_ALWAYS)) strcpy (isGenAlways[i], "YES"); else strcpy (isGenAlways[i], "NO"); if (md.getBoolean(MetaData::ATTR_COL_IS_GEN_BY_DEF_ON_NULL)) strcpy (isGenOnNull[i], "YES"); else strcpy (isGenOnNull[i], "NO"); } cout << "\n columnName isNull isIdentity isGenAlways" << " isGenOnNull " << endl; cout <<"---------------------------------------------------------" << endl; for(int i=0; i < columnCount; ++i) { cout << " " << colNames[i] << " "; printf("%10s%10s%12s%12s\n", isnull[i], isIdentity[i], isGenAlways[i], isGenOnNull[i]); }
データベース・メタデータの記述について
データベース・メタデータの記述は、明示的なDESCRIBE
操作と同じになります。記述対象のオブジェクトは、スキーマ内のオブジェクトである必要があります。型の記述では、getMetaData()
メソッドを接続からコールし、オブジェクトの名前またはRefAny
オブジェクトを渡します。最初にOBJECT
モードで環境を初期化する必要があります。getMetaData()
メソッドでは、MetaData
型のオブジェクトが戻されます。MetaData
型の各オブジェクトには、記述ツリーの一部である属性のリストがあります。この記述ツリーを再帰的に横断して参照できるサブツリーで、詳細な情報を表示できます。オブジェクトに関する詳細情報は、get
xxx
()
メソッドをコールして取得できます。
データベースとそのオブジェクトを再帰的に記述するブラウザの構築が必要な場合は、(データベースも含めて)そのデータベースにある各オブジェクトの属性数、属性IDのリストおよび属性型のリストに関する情報にアクセスできます。この情報を使用すると、記述ツリーを最上位ノード(データベース)から表の列、型の属性、プロシージャやファンクションのパラメータに至るまで、再帰的にたどることができます。
たとえば、表とその内容を記述するという典型的なケースを想定します。getMetaData()
メソッドを接続からコールし、記述する表の名前を渡します。戻されたMetaData
オブジェクトには、表に関する情報が含まれています。記述するオブジェクト(表、列、型、コレクション、ファンクション、プロシージャなど)の型はわかっているため、属性リストを取得できます。対応するget
xxx
()
メソッドをコールすると、表に指定されている型の変数内に値を取り出すことができます。
表6-1 属性のグループ化
属性の型 | 説明 |
---|---|
すべての要素に属する属性 |
|
表およびビューに属する属性 |
|
プロシージャ、ファンクションおよびパッケージ・サブプログラムに属する属性 |
|
パッケージに属する属性 |
|
型に属する属性 |
|
型属性に属する属性 |
|
型メソッドに属する属性 |
|
コレクション型に属する属性 |
|
シノニムに属する属性 |
|
順序に属する属性 |
|
表またはビューの列に属する属性 |
|
引数または結果に属する属性 |
|
リスト・タイプを指定する属性 |
|
スキーマに固有の属性 |
|
データベースに固有の属性 |
この項には次のトピックが含まれます: 「メタデータの使用方法(コードの例)」。
メタデータの使用方法(コードの例)
この項では、メタデータを使用するためのコード例を示します。
例6-2 単純なデータベース表の属性に関するメタデータの取得方法
この例は、単純なデータベース表の属性に関するメタデータの取得方法を示しています。
/* Create an environment and a connection to the HR database */ . . /* Call the getMetaData method on the Connection object obtainedv*/ MetaData emptab_metaData = connection->getMetaData( "EMPLOYEES", MetaData::PTYPE_TABLE); /* Now that you have the metadata information on the EMPLOYEES table, call the getxxx methods using the appropriate attributes */ /* Call getString */ cout<<"Schema:"<< (emptab_metaData.getString(MetaData::ATTR_OBJ_SCHEMA))<<endl; if(emptab_metaData.getInt( emptab_metaData::ATTR_PTYPE)==MetaData::PTYPE_TABLE) cout<<"EMPLOYEES is a table"<<endl; else cout<<"EMPLOYEES is not a table"<<endl; /* Call getInt to get the number of columns in the table */ int columnCount=emptab_metaData.getInt(MetaData::ATTR_NUM_COLS); cout<<"Number of Columns:"<<columnCount<<endl; /* Call getTimestamp to get the timestamp of the table object */ Timestamp tstamp = emptab_metaData.getTimestamp(MetaData::ATTR_TIMESTAMP); /* Now that you have the value of the attribute as a Timestamp object, you can call methods to obtain the components of the timestamp */ int year; unsigned int month, day; tstamp.getData(year, month, day); /* Call getVector for attributes of list type, such as ATTR_LIST_COLUMNS */ vector<MetaData>listOfColumns; listOfColumns=emptab_metaData.getVector(MetaData::ATTR_LIST_COLUMNS); /* Each of the list elements represents a column metadata, so now you can access the column attributes*/ for (int i=0;i<listOfColumns.size();i++ { MetaData columnObj=listOfColumns[i]; cout<<"Column Name:"<<(columnObj.getString(MetaData::ATTR_NAME))<<endl; cout<<"Data Type:"<<(columnObj.getInt(MetaData::ATTR_DATA_TYPE))<<endl; . . /* and so on to obtain metadata on other column specific attributes */ }
例6-3 ユーザー定義型を含む列からのメタデータの取得方法
この例は、データベース表のユーザー定義型を含む列からのメタデータの取得方法を示しています。
/* Create an environment and a connection to the HR database */ ... /* Call the getMetaData method on the Connection object obtained */ MetaData custtab_metaData = connection->getMetaData( "CUSTOMERS", MetaData::PTYPE_TABLE); /* Have metadata information on CUSTOMERS table; call the getxxx methods */ /* Call getString */ cout<<"Schema:"<<(custtab_metaData.getString(MetaData::ATTR_OBJ_SCHEMA)) <<endl;
if(custtab_metaData.getInt(custtab_metaData::ATTR_PTYPE)==MetaData::PTYPE_TABLE)
cout<<"CUSTOMERS is a table"<<endl; else cout<<"CUSTOMERS is not a table"<<endl; /* Call getVector to obtain list of columns in the CUSTOMERS table */ vector<MetaData>listOfColumns; listOfColumns=custtab_metaData.getVector(MetaData::ATTR_LIST_COLUMNS); /* Assuming metadata for column cust_address_typ is fourth element in list*/ MetaData customer_address=listOfColumns[3]; /* Obtain the metadata for the customer_address attribute */ int typcode = customer_address.getInt(MetaData::ATTR_TYPECODE); if(typcode==OCCI_TYPECODE_OBJECT) cout<<"customer_address is an object type"<<endl; else cout<<"customer_address is not an object type"<<endl; string objectName=customer_address.getString(MetaData::ATTR_OBJ_NAME); /* Now that you have the name of the address object, the metadata of the attributes of the type can be obtained by using getMetaData on the connection by passing the object name */ MetaData address = connection->getMetaData(objectName); /* Call getVector to obtain the list of the address object attributes */ vector<MetaData> attributeList = address.getVector(MetaData::ATT_LIST_TYPE_ATTRS); /* and so on to obtain metadata on other address object specific attributes */
例6-4 参照からのオブジェクト・メタデータの取得方法
この例は、オブジェクトへの参照が使用されているときに、そのオブジェクトに関するメタデータを取得する方法を示しています。
Type ADDRESS(street VARCHAR2(50), city VARCHAR2(20)); Table Person(id NUMBER, addr REF ADDRESS); /* Create an environment and a connection to the HR database */ . . /* Call the getMetaData method on the Connection object obtained */ MetaData perstab_metaData = connection->getMetaData( "Person", MetaData::PTYPE_TABLE); /* Now that you have the metadata information on the Person table, call the getxxx methods using the appropriate attributes */ /* Call getString */ cout<<"Schema:"<<(perstab_metaData.getString(MetaData::ATTR_OBJ_SCHEMA))<<endl; if(perstab_metaData.getInt(perstab_metaData::ATTR_PTYPE)==MetaData::PTYPE_TABLE) cout<<"Person is a table"<<endl; else cout<<"Person is not a table"<<endl; /* Call getVector to obtain the list of columns in the Person table*/ vector<MetaData>listOfColumns; listOfColumns=perstab_metaData.getVector(MetaData::ATTR_LIST_COLUMNS); /* Each of the list elements represents a column metadata, so now get the data type of the column by passing ATTR_DATA_TYPE to getInt */ for(int i=0;i<numCols;i++) { int dataType=colList[i].getInt(MetaData::ATTR_DATA_TYPE); /* If the data type is a reference, get the Ref and obtain the metadata about the object by passing the Ref to getMetaData */ if(dataType==SQLT_REF) RefAny refTdo=colList[i].getRef(MetaData::ATTR_REF_TDO); /* Now you can obtain the metadata about the object as shown MetaData tdo_metaData=connection->getMetaData(refTdo); /* Now that you have the metadata about the TDO, you can obtain the metadata about the object */ }
例6-5 ResultSetオブジェクトからの選択リストに関するメタデータの取得方法
この例は、ResultSet
からの選択リストに関するメタデータの取得方法について示しています。
/* Create an environment and a connection to the database */ ... /* Create a statement and associate it with a select clause */ string sqlStmt="SELECT * FROM EMPLOYEES"; Statement *stmt=conn->createStatement(sqlStmt); /* Execute the statement to obtain a ResultSet */ ResultSet *rset=stmt->executeQuery(); /* Obtain the metadata about the select list */ vector<MetaData>cmd=rset->getColumnListMetaData(); /* The metadata is a column list and each element is a column metaData */ int dataType=cmd[i].getInt(MetaData::ATTR_DATA_TYPE); ...
getMetaData
メソッドがコールされるのは、ATTR_COLLECTION_ELEMENT
属性の場合のみです。
属性のリファレンス情報
パラメータ属性
すべての要素には、その要素に固有の属性およびいくつかの汎用属性があります。表6-2では、すべての要素に属する属性について説明します。
表6-2 すべての要素に属する属性
属性 | 説明 | 属性のデータ型 |
---|---|---|
|
オブジェクトIDまたはスキーマID。 |
|
|
オブジェクト名、スキーマ名またはデータベース名。 |
|
|
オブジェクトが置かれているスキーマ。 |
|
|
パラメータによって記述される情報の型。可能な値は次のとおりです。
|
|
|
この説明の基礎となるオブジェクトの |
|
次の各項では、各種の要素に固有の属性を示しています。
表およびビューの属性
表またはビューのパラメータ(PTYPE_TABLE
型またはPTYPE_VIEW
型)には、表6-3に記載されている型固有の属性があります。
表6-3 表またはビューに属する属性
属性 | 説明 | 属性のデータ型 |
---|---|---|
|
オブジェクトID。 |
|
|
列数。 |
|
|
列リスト( |
|
|
記述されているオブジェクト型への |
|
|
表またはビューが一時的であるかどうかを識別します。 |
|
|
表またはビューが型指定かどうかを識別します。 |
|
|
一時表の継続時間。指定できる値は次のとおりです。
|
|
表に属する追加属性は、表6-4に記載されています。
表6-4 表に固有の属性
属性 | 説明 | 属性のデータ型 |
---|---|---|
|
セグメント・ヘッダーのデータ・ブロック・アドレス。 |
|
|
表がある表領域。 |
|
|
表をクラスタ化するかどうかを識別します。 |
|
|
表をパーティション化するかどうかを識別します。 |
|
|
表が索引のみかどうかを識別します。 |
|
プロシージャ、ファンクションおよびサブプログラムの属性
プロシージャまたはファンクションのパラメータ(PTYPE_PROC
型またはPTYPE_FUNC
型)には、表6-5に記載されている型固有の属性があります。
表6-5 プロシージャまたはファンクションに属する属性
属性 | 説明 | 属性のデータ型 |
---|---|---|
|
引数のリスト。「リスト属性」を参照してください。 |
|
|
プロシージャまたはファンクションに対して実行者権限が設定されているかどうかを識別します。 |
|
パッケージ・サブプログラムに属する追加属性は、表6-6に記載されています。
表6-6 パッケージ・サブプログラムに属する属性
属性 | 説明 | 属性のデータ型 |
---|---|---|
|
プロシージャまたはファンクションの名前。 |
|
|
オーバーロードする側のID番号(これはプロシージャまたはファンクションがパッケージの一部でかつそれらをオーバーロードする場合に必要です)。戻り値は、PL/SQLファンクションまたはプロシージャによる直接問合せとは異なる可能性があります。 |
|
型属性
型のパラメータ(PTYPE_TYPE
型)には、表6-8に記載されている属性があります。
表6-8 型に属する属性
属性 | 説明 | 属性のデータ型 |
---|---|---|
|
列の型がオブジェクト型の場合に、型の型記述子オブジェクトのメモリー内REFを戻します。 |
|
|
型コードです。指定できる値は次のとおりです。
|
|
|
型がコレクションの場合はコレクションの型コードで、それ以外の場合は無効です。指定できる値は次のとおりです。
|
|
|
ユーザーによって割り当てられたバージョンが含まれる |
|
|
最終の型であるかどうかを識別します。 |
|
|
インスタンス化可能な型であるかどうかを識別します。 |
|
|
サブタイプであるかどうかを識別します。 |
|
|
スーパータイプが含まれているスキーマの名前。 |
|
|
スーパータイプの名前。 |
|
|
この型が実行者権限であるかどうかを識別します。 |
|
|
この型が不完全かどうかを識別します。 |
|
|
システムの型であるかどうかを識別します。 |
|
|
事前定義の型であるかどうかを識別します。 |
|
|
一時的な型であるかどうかを識別します。 |
|
|
システム生成の型であるかどうかを識別します。 |
|
|
この型にネストした表の属性があるかどうかを識別します。 |
|
|
この型に |
|
|
この型に |
|
|
コレクション要素へのハンドル。 「コレクション属性」を参照してください。 |
|
|
型属性の数。 |
|
|
型属性のリスト。 「リスト属性」を参照してください。 |
|
|
型メソッドの数。 |
|
|
型メソッドのリスト。 「リスト属性」を参照してください。 |
|
|
型のマップ・メソッド。 「型メソッド属性」を参照してください。 |
|
|
型のオーダー・メソッド。「型メソッド属性」を参照してください。 |
|
型属性の属性
型の属性のパラメータ(PTYPE_TYPE_ATTR
型)には、表6-9に記載されている属性があります。
表6-9 型属性に属する属性
属性 | 説明 | 属性のデータ型 |
---|---|---|
|
型属性の最大サイズ。この長さは、文字列および行の文字数ではなくバイト数で戻されます。 |
|
|
型コード。 |
|
|
型属性のデータ型 |
|
|
型属性名である文字列へのポインタ。 |
|
|
数値型属性の精度。精度が0 (ゼロ)以外でスケールが |
|
|
数値型属性のスケール。精度が0 (ゼロ)以外でスケールが |
|
|
型名である文字列。データ型が |
|
|
型が作成されたスキーマ名が含まれる文字列。 |
|
|
列型がオブジェクト型である場合に、型のTDOのメモリー内 |
|
|
型属性が文字列またはキャラクタ・タイプである場合のキャラクタ・セットID。 |
|
|
型属性が文字列またはキャラクタ・タイプである場合のキャラクタ・セット・フォーム。 |
|
|
日時または間隔における秒の小数部分の精度。 |
|
|
間隔における整数部分のフィールドの精度。 |
|
型メソッド属性
型のメソッドのパラメータ(PTYPE_TYPE_METHOD
型)には、表6-10に記載されている属性があります。
表6-10 型メソッドに属する属性
属性 | 説明 | 属性のデータ型 |
---|---|---|
|
メソッド(プロシージャまたはファンクション)の名前。 |
|
|
メソッドのカプセル化レベル。指定できる値は次のとおりです。
|
|
|
引数のリスト。 |
|
|
メソッドがコンストラクタであるかどうかを識別します。 |
|
|
メソッドがデストラクタであるかどうかを識別します。 |
|
|
メソッドが演算子であるかどうかを識別します。 |
|
|
メソッドが自己参照であるかどうかを識別します。 |
|
|
メソッドがマップ・メソッドであるかどうかを識別します。 |
|
|
メソッドがオーダー・メソッドであるかどうかを識別します。 |
|
|
メソッドに対して「Read No Data State」が設定されているかどうかを識別します。 |
|
|
メソッドに対して「Read No Process State」が設定されているかどうかを識別します。 |
|
|
メソッドに対して「Write No Data State」が設定されているかどうかを識別します。 |
|
|
メソッドに対して「Write No Process State」が設定されているかどうかを識別します。 |
|
|
最終のメソッドであるかどうかを識別します。 |
|
|
インスタンス化可能なメソッドであるかどうかを識別します。 |
|
|
オーバーライドする側のメソッドであるかどうかを識別します。 |
|
コレクション属性
コレクション型のパラメータ(PTYPE_COLL
型)には、表6-11に記載されている属性があります。
表6-11 コレクション型に属する属性
属性 | 説明 | 属性のデータ型 |
---|---|---|
|
型属性の最大サイズ。この長さは、文字列および行の文字数ではなくバイト数で戻されます。 |
|
|
Typecode。 |
|
|
型属性のデータ型。 |
|
|
配列内の要素数。配列であるコレクションについてのみ有効です。 |
|
|
型属性名である文字列へのポインタ。 |
|
|
数値型属性の精度。精度が0 (ゼロ)以外でスケールが |
|
|
数値型属性のスケール。精度が0 (ゼロ)以外でスケールが |
|
|
型名である文字列。データ型が |
|
|
型が作成されたスキーマ名が含まれる文字列。 |
|
|
型の |
|
|
Typecode。 |
|
|
型属性のデータ型。 |
|
シノニム属性
シノニムのパラメータ(PTYPE_SYN
型)には、表6-12に記載されている属性があります。
表6-12 シノニムに属する属性
属性 | 説明 | 属性のデータ型 |
---|---|---|
|
オブジェクトID。 |
|
|
シノニム変換のスキーマ名が含まれるNULL終了文字列。 |
|
|
シノニム変換のオブジェクト名が含まれるNULL終了文字列。 |
|
|
シノニム変換のデータベース・リンク名が含まれるNULL終了文字列。 |
|
順序属性
順序のパラメータ(PTYPE_SEQ
型)には、表6-13に記載されている属性があります。
表6-13 順序に属する属性
属性 | 説明 | 属性のデータ型 |
---|---|---|
|
オブジェクトID。 |
|
|
最小値(Oracle NUMBER形式)。 |
|
|
最大値(Oracle NUMBER形式)。 |
|
|
増分数(Oracle NUMBER形式)。 |
|
|
キャッシュされた順序番号の数。順序がキャッシュされた順序でない場合は、0 (ゼロ)となります(Oracle NUMBER形式)。 |
|
|
順序が順序指定されているかどうかを識別します。 |
|
|
最高水位標(Oracle NUMBER形式)。 |
|
列の属性
表またはビューの列のパラメータ(PTYPE_COL
型)には、表6-14に記載されている属性があります。
表6-14 表またはビューの列に属する属性
属性 | 説明 | 属性のデータ型 |
---|---|---|
|
列の最大サイズ。この長さは、文字列および行の文字数ではなくバイト数で戻されます。 |
|
|
列のデータ型。 |
|
|
列名である文字列へのポインタ。 |
|
|
精度を戻します。 |
|
|
数値列のスケール。精度が0 (ゼロ)以外でスケールが |
|
|
列にnull値が許可されていない場合、 |
|
|
型名である文字列が戻されます。データ型が |
|
|
型が作成されたスキーマ名が含まれる文字列が戻されます。 |
|
|
列型がオブジェクト型である場合の、型のTDOの |
|
|
文字の列のキャラクタ・セットID。設定されていない場合、キャラクタ・セットIDのデフォルトは直接パス・コンテキストで設定されたキャラクタ・セットIDになります。 |
|
|
列のキャラクタ・セット・フォーム。この属性を設定すると、クライアント側のデータベースまたは各国語キャラクタ・セットの使用が指定されます。 |
|
引数属性および結果属性
引数、プロシージャ型またはファンクション型(PTYPE_ARG
型)、型メソッド引数(PTYPE_TYPE_ARG
型)、あるいはメソッド結果(PTYPE_TYPE_RESULT
型)のパラメータには、表6-15で説明している属性があります。
表6-15 引数または結果に属する属性
属性 | 説明 | 属性のデータ型 |
---|---|---|
|
引数名である文字列へのポインタが戻されます。 |
|
|
引数リスト内の引数の位置。常に |
|
|
Typecode。 |
|
|
引数のデータ型。 |
|
|
引数のデータ型のサイズ。この長さは、文字列および行の文字数ではなくバイト数で戻されます。 |
|
|
数値引数の精度。精度が0 (ゼロ)以外でスケールが |
|
|
数値引数のスケール。精度が0 (ゼロ)以外でスケールが |
|
|
データ型レベル。この属性では常に |
|
|
引数にデフォルト値があるかどうかを示します。 |
|
|
引数がレコードまたは表の型である場合の、次レベルにある引数のリスト。 |
|
|
引数モードを示します。有効な値は次のとおりです。
|
|
|
基数が戻されます(数値型の場合)。 |
|
|
列に |
bool |
|
型名(またはパッケージのローカル型の場合はパッケージ名)である文字列が戻されます。データ型が |
|
|
|
|
|
|
|
|
|
|
|
引数型がオブジェクトである場合、型のTDOの |
|
|
引数が文字列またはキャラクタ・タイプである場合、キャラクタ・セットIDが戻されます。 |
|
|
引数が文字列またはキャラクタ・タイプである場合、キャラクタ・セット・フォームが戻されます。 |
|
リスト属性
リスト内のすべての要素についてリスト型の属性を記述できます。ファンクション引数リストの場合、位置0
には戻り値のパラメータがあります(PTYPE_ARG
)。
すべての要素についてリストが繰り返し記述されます。結果はC++ vector<MetaData>
に格納されます。リスト型の属性を記述するには、getVector()
メソッドをコールします。表6-16にリスト属性を示しています。
表6-16 ATTR_LIST_TYPEの値
可能な値 | 説明 |
---|---|
|
列リスト |
|
プロシージャまたはファンクションの引数リスト |
|
サブプログラム・リスト |
|
型属性リスト |
|
型メソッド・リスト |
|
スキーマ内のオブジェクト・リスト |
|
データベース内のスキーマ・リスト |
スキーマ属性
スキーマ型のパラメータ(PTYPE_SCHEMA
型)には、表6-17に記載されている属性があります。
表6-17 スキーマに固有の属性
属性 | 説明 | 属性のデータ型 |
---|---|---|
|
スキーマ内のオブジェクトのリスト |
|
データベース属性
データベースのパラメータ(PTYPE_DATABASE
型)には、表6-18に記載されている属性があります。
表6-18 データベースに固有の属性
属性 | 説明 | 属性のデータ型 |
---|---|---|
|
データベースのバージョン。 |
|
|
サーバー・ハンドルからのデータベース・キャラクタ・セットID。 |
|
|
サーバー・ハンドルからのデータベース・ネイティブ・キャラクタ・セットID。 |
|
|
データベース内のスキーマのリスト( |
|
|
プロシージャ名の最大長。 |
|
|
列名の最大長。 |
|
|
データベース内のカーソルおよびプリコンパイルされた文に対する
|
|
|
カタログ(データベース)名の最大長。 |
|
|
修飾表内のカタログの位置。値は次のとおりです。
|
|
|
データベースがセーブポイントをサポートしているかどうかを識別します。値は次のとおりです。
|
|
|
データベースがNOWAIT句をサポートしているかどうかを識別します。値は次のとおりです。
|
|
|
DDL文に自動コミット・モードが必須かどうかを識別します。値は次のとおりです。
|
|
|
データベースのロック・モード。値は次のとおりです。
|
|