Hitachi

Hitachi Advanced Data Binder AP開発ガイド


16.9.4 SQLColAttribute,SQLColAttributeW

〈この項の構成〉

(1) 機能

結果セットの列のディスクリプタ情報を返します。

(2) 形式

(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_SUCCESSSQL_SUCCESS_WITH_INFOSQL_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

無効なディスクリプタインデクス

  • ColumnNumber0が指定されました。

  • ColumnNumberに結果セットの列数よりも大きい値が指定されました。

24000

無効なカーソル状態

HY000

一般エラー

×

HY001

メモリ割り当てエラー

×

HY008

動作がキャンセルされた

×

HY010

関数シーケンスエラー

×

HY013

メモリ管理エラー

メモリオブジェクトにアクセスできないため,関数の呼び出しを処理できません。

×

HY090

無効な文字列長または無効なバッファ長

  • CharacterAttributePtrに文字列を指すポインタが指定されていて,BufferLengthに0以下の値が指定されています。

  • BufferLengthに無効な値が指定されました(SQL_NTS)。

HY091

無効なディスクリプタフィールド識別子

FieldIdentifierに指定された値が,定義された値でもなく,実装時に定義された値でもありません。

HYC00

オプション機能は実装されていない

FieldIdentifierに指定された値はサポートしていません。

HYT01

接続タイムアウト終了

データソースが要求に応答する前に接続タイムアウト時間が経過しました。接続タイムアウト時間は,SQLSetConnectAttrまたはSQLSetConnectAttrWSQL_ATTR_CONNECTION_TIMEOUTで設定できます。

×

IM001

ドライバはこの関数をサポートしていない

×

(凡例)

○:HADB ODBCドライバが返すことがあるSQLSTATEです。

×:HADB ODBCドライバが返さないSQLSTATEです。

−:なし。