SQLColAttributeは、いくつかのTeradata ODBCドライバ定義列の属性を、FieldIdentifier引数としてサポートします。さらに、SQL_COLUMN_NAMEを使用することによって、名前ではなく、TeradataのTITLE(存在する場合)を返すように拡張されました。これによって、大半のレポート ライターで認識できるようになるからです。
ドライバ定義の属性値を取得するためにSQLColAttributeを使用するときには、その属性のタイプをBufferLength引数で指定する必要があります。また、SQLColAttributeは、タイプに応じて2つのポインタのいずれかを使用して値を返します。INTEGER型の情報は、SQLLEN値として*NumericAttributePtrで返されます。それ以外の形式の情報は、*CharacterAttributePtrで返されます。特定の属性では使用されていないポインタは、呼び出し内でNULLに設定する必要があります。例えば、SQL_DESC_TD_ODBC_TYPE属性の値は、次のように取得します。
rc = SQLColAttribute(hstmt, colno, SQL_DESC_TD_ODBC_TYPE, NULL, SQL_IS_SMALLINT, NULL, &NumAttrPtr);
次のリストでは、Teradata ODBCで定義された属性ごとに使用されるポインタを示します。
ドライバ定義のFieldIdentifier値は、次のとおりです。
- SQL_COLUMN_ACTIVITY_TYPEは、実行するSQL文の種類を指定する整数です。値は、NumericAttributePtrで返されます。
- SQL_COLUMN_COST_ESTIMATEは、SQL文を実行するためのコスト見積もりを備えた整数です。返される値は、時間の見積もりを秒単位で表します。値は、NumericAttributePtrで返されます。
- SQL_COLUMN_FORMATは、列に対応するTeradataのFORMAT句を返します。値は、CharacterAttributePtrで返されます。
- SQL_COLUMN_ACTUAL_NAMEは、結果列に対応する名前を返します。SQL_COLUMN_NAMEの意味が変わったので、このFieldIdentifier値は必要です。値は、CharacterAttributePtrで返されます。
- SQL_COLUMN_CHARACTER_SETは、列の文字セットを含む整数です。値は、NumericAttributePtrで返されます。
- SQL_COLUMN_EXPORT_WIDTHは、文字の列のデータベース エクスポート幅を含む整数です。値は、NumericAttributePtrで返されます。
- SQL_COLUMN_EXPORT_WIDTH_ADJは、文字の列のデータベース エクスポート幅調整を含む整数です。値は、NumericAttributePtrで返されます。
- SQL_COLUMN_EXPORT_BYTESは、文字の列に対してデータベースで利用できるバイト数を含む整数です。値は、NumericAttributePtrで返されます。
- SQL_DESC_TD_ODBC_TYPEは、Teradata ODBC固有のSQLデータ型コードを含むSQLSMALLINTです。同じ標準ODBC SQL型に複数の種類のデータベース型が含まれている場合は、Teradata ODBC固有のSQLデータ型コードを使用してデータベースの種類を識別できます。値は、NumericAttributePtrで返されます。
これらの属性の詳細については、SQL記述子フィールドを参照してください。