16.9.4 SQLColAttribute,SQLColAttributeW
- 〈この項の構成〉
(1) 機能
結果セットの列のディスクリプタ情報を返します。
(2) 形式
-
SQLColAttributeの場合
SQLRETURN SQLColAttribute ( SQLHSTMT StatementHandle, /* In */ SQLUSMALLINT ColumnNumber, /* In */ SQLUSMALLINT FieldIdentifier, /* In */ SQLPOINTER CharacterAttributePtr, /* Out */ SQLSMALLINT BufferLength, /* In */ SQLSMALLINT * StringLengthPtr, /* Out */ SQLLEN * NumericAttributePtr /* Out */ )
-
SQLColAttributeWの場合
SQLRETURN SQLColAttributeW ( SQLHSTMT StatementHandle, /* In */ SQLUSMALLINT ColumnNumber, /* In */ SQLUSMALLINT FieldIdentifier, /* In */ SQLPOINTER CharacterAttributePtr, /* Out */ SQLSMALLINT BufferLength, /* In */ SQLSMALLINT * StringLengthPtr, /* Out */ SQLLEN * NumericAttributePtr /* Out */ )
(3) 引数
- StatementHandle:
-
ステートメントハンドルを指定します。
- ColumnNumber:
-
フィールド値を取得するIRDのレコード番号を指定します。この番号は1から列の昇順で番号が付けられていて,結果セットの列番号に対応しています。
- FieldIdentifier:
-
取得するIRDのディスクリプタフィールドに対応する識別子を指定します。
指定できるフィールド識別子を次の表に示します。
表16‒10 SQLColAttributeおよびSQLColAttributeWのFieldIdentifierに指定できるフィールド識別子 項番
フィールド識別子
1
SQL_COLUMN_LENGTH
2
SQL_COLUMN_PRECISION
3
SQL_COLUMN_SCALE
4
SQL_DESC_AUTO_UNIQUE_VALUE
5
SQL_DESC_BASE_COLUMN_NAME
6
SQL_DESC_BASE_TABLE_NAME
7
SQL_DESC_CASE_SENSITIVE
8
SQL_DESC_CATALOG_NAME
9
SQL_DESC_CONCISE_TYPE
10
SQL_DESC_COUNT
11
SQL_DESC_DISPLAY_SIZE
12
SQL_DESC_FIXED_PREC_SCALE
13
SQL_DESC_LABEL
14
SQL_DESC_LENGTH
15
SQL_DESC_LITERAL_PREFIX
16
SQL_DESC_LITERAL_SUFFIX
17
SQL_DESC_LOCAL_TYPE_NAME
18
SQL_DESC_NAME
19
SQL_DESC_NULLABLE
20
SQL_DESC_NUM_PREC_RADIX
21
SQL_DESC_OCTET_LENGTH
22
SQL_DESC_PRECISION
23
SQL_DESC_SCALE
24
SQL_DESC_SCHEMA_NAME
25
SQL_DESC_SEARCHABLE
26
SQL_DESC_TABLE_NAME
27
SQL_DESC_TYPE
28
SQL_DESC_TYPE_NAME
29
SQL_DESC_UNNAMED
30
SQL_DESC_UNSIGNED
31
SQL_DESC_UPDATABLE
- CharacterAttributePtr:
-
FieldIdentifierに対応するIRDのディスクリプタフィールド値を返すバッファへのポインタを指定します。ディスクリプタフィールド値が文字列以外の場合,この引数は使用されません。
- BufferLength:
-
*CharacterAttributePtrの長さを指定します(単位:バイト長)。SQL_NTSは指定できません。
- StringLengthPtr:
-
*CharacterAttributePtrに返す,有効な総バイト長(NULL終端文字を除く)を返すバッファへのポインタを指定します。
- NumericAttributePtr:
-
FieldIdentifierに対応するIRDのディスクリプタフィールド値を返す整数バッファへのポインタを指定してください。ディスクリプタフィールド値が数値以外の場合は,この引数は使用されません。
(4) 戻り値
SQL_SUCCESS,SQL_SUCCESS_WITH_INFO,SQL_ERROR,またはSQL_INVALID_HANDLEが返されます。
(5) SQLSTATE
この関数では次のSQLSTATEを返します。
SQLSTATE |
説明 |
備考 |
返却 |
---|---|---|---|
01000 |
一般警告 |
− |
× |
01004 |
文字列データの右側が切り捨てられた |
*CharacterAttributePtrバッファの大きさが不足しているため,すべての文字列値を格納できませんでした(文字列値が切り捨てられました)。切り捨てられる前の文字列値の長さが,*StringLengthPtrに格納されます。このとき,SQL_SUCCESS_WITH_INFOを返します。 |
○ |
01S51 |
文字コード変換時に置き換えが発生した |
変換できない文字コードを検出し,指定の文字に置き換えました。このとき,SQL_SUCCESS_WITH_INFOを返します。 |
○ |
07005 |
準備されたステートメントがcursor-specificationではない |
StatementHandleに関連づけられたステートメントが結果セットを返しません。 |
○ |
07009 |
無効なディスクリプタインデクス |
|
○ |
24000 |
無効なカーソル状態 |
− |
○ |
HY000 |
一般エラー |
× |
|
HY001 |
メモリ割り当てエラー |
× |
|
HY008 |
動作がキャンセルされた |
× |
|
HY010 |
関数シーケンスエラー |
× |
|
HY013 |
メモリ管理エラー |
メモリオブジェクトにアクセスできないため,関数の呼び出しを処理できません。 |
× |
HY090 |
無効な文字列長または無効なバッファ長 |
|
○ |
HY091 |
無効なディスクリプタフィールド識別子 |
FieldIdentifierに指定された値が,定義された値でもなく,実装時に定義された値でもありません。 |
○ |
HYC00 |
オプション機能は実装されていない |
FieldIdentifierに指定された値はサポートしていません。 |
○ |
HYT01 |
接続タイムアウト終了 |
データソースが要求に応答する前に接続タイムアウト時間が経過しました。接続タイムアウト時間は,SQLSetConnectAttrまたはSQLSetConnectAttrWのSQL_ATTR_CONNECTION_TIMEOUTで設定できます。 |
× |
IM001 |
ドライバはこの関数をサポートしていない |
− |
× |
- (凡例)
-
○:HADB ODBCドライバが返すことがあるSQLSTATEです。
×:HADB ODBCドライバが返さないSQLSTATEです。
−:なし。