Hitachi

Hitachi Advanced Data Binder AP開発ガイド


16.9.8 SQLGetData

〈この項の構成〉

(1) 機能

結果セット中の単一列のデータを取得します。

(2) 形式

SQLRETURN SQLGetData
(
  SQLHSTMT        StatementHandle,        /* In */
  SQLUSMALLINT    ColumnNumber,           /* In */
  SQLSMALLINT     TargetType,             /* In */
  SQLPOINTER      TargetValuePtr,         /* Out */
  SQLLEN          BufferLength,           /* In */
  SQLLEN        * StrLen_or_IndPtr        /* Out */
)

(3) 引数

StatementHandle

ステートメントハンドルを指定します。

ColumnNumber

データを取得する列の番号を指定します。

HADBはブックマークをサポートしていないため,列番号は1から始まります。

TargetType

TargetValuePtrが指す領域のCデータ型の識別子またはSQL_C_DEFAULTを指定します。SQL_C_DEFAULTを指定すると,デフォルトのCデータ型を仮定します。

TargetValuePtr

列のデータを受け取る領域を指すポインタを指定します。

BufferLength

TargetValuePtrが指す領域の長さを指定します(単位:バイト長)。

StrLen_or_IndPtr

HADB ODBCドライバが返すデータの長さまたは標識を格納する領域を指すポインタを指定します。

HADB ODBCドライバはデータの長さ,または標識を返します。

また,列のデータがナル値の場合,戻り値にSQL_NULL_DATAを返します。

(4) 戻り値

SQL_SUCCESSSQL_SUCCESS_WITH_INFOSQL_NO_DATASQL_ERROR,またはSQL_INVALID_HANDLEが返されます。

(5) SQLSTATE

この関数では次のSQLSTATEを返します。

SQLSTATE

説明

備考

返却

01000

一般警告

×

01004

文字列データの右側が切り捨てられた

TargetValuePtrバッファが指すバッファの大きさが,ColumnNumberで指定された列のデータを格納するのに十分ではありません。このとき,SQL_SUCCESS_WITH_INFOを返します。

01S07

小数点以下切り捨て

数値の小数部分が切り捨てられました。時刻部分を含む時刻,タイムスタンプまたは間隔データ型の場合,時刻の小数部分が切り捨てられました。このとき,SQL_SUCCESS_WITH_INFOを返します。

01S51

文字コード変換時に置き換えが発生した

変換できない文字コードを検出し,指定の文字に置き換えました。このとき,SQL_SUCCESS_WITH_INFOを返します。

07006

データ型属性の制限違反

結果セットの列のデータ値をTargetTypeで指定されるCデータ型に変換できません。

07009

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

ColumnNumberに存在しない列番号が指定されました。

08S01

通信リンク失敗

×

22002

必要な標識変数が提供されない

StrLen_or_IndPtrがNULLポインタで,NULLデータが取得されました。

22003

数値が範囲外である

数値(数値または文字列)の整数部分が削除されました。

×

22007

無効な日付時刻形式

文字の列が日付,時刻またはタイムスタンプのCの構造体にバインドされましたが,列の値が無効な日付,時刻,またはタイムスタンプです。

22012

ゼロ除算

ゼロ除算が行われた算術式の値が返されました。

×

22015

間隔フィールドのオーバフロー

×

22018

キャスト指定に対する無効な文字値

24000

無効なカーソル状態

StatementHandle上でカーソルがオープンされ,SQLFetchが呼び出されましたが,カーソルが位置づけられているのは結果セットの先頭の前,または結果セットの末尾です。

5C002

文字コード変換エラー

5C037

データフォーマットエラー

5C038

データ変換エラー

取得した結果データまたは受け取り領域の指定内容のどちらかに誤りがあります。

HY000

一般エラー

×

HY001

メモリ割り当てエラー

HADB ODBCドライバは,関数の実行または完了をサポートするために必要なメモリを割り当てられていません。

HY003

無効なアプリケーションのバッファのデータ型

HY008

動作がキャンセルされた

×

HY009

NULLポインタの不正使用

TargetValuePtrStrLen_or_IndPtrの両方にNULLポインタが指定されました。

HY010

関数シーケンスエラー

HY013

メモリ管理エラー

HY090

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

次の条件をすべて満たしています。

  • TargetValuePtrにNULLポインタ以外が指定されています。

  • BufferLengthに0未満の値が指定されています。

HY104

無効な精度または無効なスケール値

HY109

無効なカーソル位置

×

HYC00

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

TargetTypeと対応する列のSQLデータ型の組み合わせで指定される変換をサポートしていません。

HYT00

タイムアウト終了

×

(凡例)

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

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

−:なし。

(6) 注意事項

次の機能はサポートしていません。