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_SUCCESS,SQL_SUCCESS_WITH_INFO,SQL_NO_DATA,SQL_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ポインタの不正使用 |
TargetValuePtrとStrLen_or_IndPtrの両方にNULLポインタが指定されました。 |
○ |
HY010 |
関数シーケンスエラー |
− |
○ |
HY013 |
メモリ管理エラー |
○ |
|
HY090 |
無効な文字列長または無効なバッファ長 |
次の条件をすべて満たしています。
|
○ |
HY104 |
無効な精度または無効なスケール値 |
− |
○ |
HY109 |
無効なカーソル位置 |
× |
|
HYC00 |
オプション機能は実装されていない |
TargetTypeと対応する列のSQLデータ型の組み合わせで指定される変換をサポートしていません。 |
○ |
HYT00 |
タイムアウト終了 |
− |
× |
- (凡例)
-
○:HADB ODBCドライバが返すことがあるSQLSTATEです。
×:HADB ODBCドライバが返さないSQLSTATEです。
−:なし。
(6) 注意事項
次の機能はサポートしていません。
-
可変長データの分割取得
-
データの最大返却長制限