16.6.2 SQLGetDescRec,SQLGetDescRecW
- 〈この項の構成〉
(1) 機能
引数で指定されたディスクリプタレコードの複数フィールドの現在の設定または値を返します。列またはパラメタの名前,データ型,および格納位置を記述するフィールドが返されます。
(2) 形式
-
SQLGetDescRecの場合
SQLRETURN SQLGetDescRec ( SQLHDESC DescriptorHandle, /* In */ SQLSMALLINT RecNumber, /* In */ SQLCHAR * Name, /* Out */ SQLSMALLINT BufferLength, /* In */ SQLSMALLINT * StringLengthPtr, /* Out */ SQLSMALLINT * TypePtr, /* Out */ SQLSMALLINT * SubTypePtr, /* Out */ SQLLEN * LengthPtr, /* Out */ SQLSMALLINT * PrecisionPtr, /* Out */ SQLSMALLINT * ScalePtr, /* Out */ SQLSMALLINT * NullablePtr /* Out */ )
-
SQLGetDescRecWの場合
SQLRETURN SQLGetDescRecW ( SQLHDESC DescriptorHandle, /* In */ SQLSMALLINT RecNumber, /* In */ SQLWCHAR * Name, /* Out */ SQLSMALLINT BufferLength, /* In */ SQLSMALLINT * StringLengthPtr, /* Out */ SQLSMALLINT * TypePtr, /* Out */ SQLSMALLINT * SubTypePtr, /* Out */ SQLLEN * LengthPtr, /* Out */ SQLSMALLINT * PrecisionPtr, /* Out */ SQLSMALLINT * ScalePtr, /* Out */ SQLSMALLINT * NullablePtr /* Out */ )
(3) 引数
- DescriptorHandle:
-
ディスクリプタハンドルを指定します。
- RecNumber:
-
列番号(ARDまたはIRD),またはパラメタ番号(APDまたはIPD)を指定します。
- Name:
-
ディスクリプタレコードのSQL_DESC_NAMEフィールドの値を返すバッファへのポインタを指定します。
- BufferLength:
-
*Nameバッファの長さ※を指定します。
この長さにNULL終端文字は含まれます。SQL_NTSは指定できません。
- StringLengthPtr:
-
*Nameバッファに返す有効なデータの長さ※を格納するバッファへのポインタを指定します。この長さにNULL終端文字は含まれません。
- 重要
-
ここに格納された*Nameの長さ※が,BufferLengthからNULL終端文字分を引いた長さ※より大きい場合,*Nameに格納される文字列はBufferLengthからNULL終端文字分を引いた長さ※に切り捨てられ,末尾にNULL終端文字が付加されます。
- 注※
-
長さの単位は,SQLGetDescRecの場合はバイト長,SQLGetDescRecWの場合は文字数となります。
- TypePtr:
-
ディスクリプタレコードのSQL_DESC_TYPEフィールドの値を返すバッファへのポインタを指定します。
- SubTypePtr:
-
ディスクリプタレコードのSQL_DESC_DATETIME_INTERVAL_CODEフィールドの値を返すバッファへのポインタを指定します。
- LengthPtr:
-
ディスクリプタレコードのSQL_DESC_OCTET_LENGTHフィールドの値を返すバッファへのポインタを指定します。
- PrecisionPtr:
-
ディスクリプタレコードのSQL_DESC_PRECISIONフィールドの値を返すバッファへのポインタを指定します。
- ScalePtr:
-
ディスクリプタレコードのSQL_DESC_SCALEフィールドの値を返すバッファへのポインタを指定します。
- NullablePtr:
-
ディスクリプタレコードのSQL_DESC_NULLABLEフィールドの値を返すバッファへのポインタを指定します。
(4) 戻り値
SQL_SUCCESS,SQL_SUCCESS_WITH_INFO,SQL_ERROR,SQL_NO_DATA,またはSQL_INVALID_HANDLEが返されます。
(5) SQLSTATE
この関数では次のSQLSTATEを返します。
SQLSTATE |
説明 |
備考 |
返却 |
---|---|---|---|
01000 |
一般警告 |
− |
× |
01004 |
文字列データの右側が切り捨てられた |
BufferLengthに指定された値が,列名のバイト長より小さいため,列名が切り捨てられました。切り捨てられる前の列名の長さが,*StringLengthPtrに格納されます。このとき,SQL_SUCCESS_WITH_INFOを返します。 |
○ |
01S51 |
文字コード変換時に置き換えが発生した |
変換できない文字コードを検出し,指定の文字に置き換えました。このとき,SQL_SUCCESS_WITH_INFOを返します。 |
○ |
07009 |
無効なディスクリプタインデクス |
RecNumberに0以下の値が指定されています。 |
○ |
08S01 |
通信リンク失敗 |
− |
× |
HY000 |
一般エラー |
× |
|
HY001 |
メモリ割り当てエラー |
× |
|
HY007 |
関連づけられたステートメントが準備されていない |
○ |
|
HY010 |
関数シーケンスエラー |
この関数を実行する前に,DescriptorHandleが関連づけられているStatementHandleに対して,SQLExecute,SQLExecDirect,SQLExecDirectWまたはSQLParamDataのどれかが呼び出され,SQL_NEED_DATAを返しました。その後,実行時データパラメタまたは実行時データ列の設定が完了していません。 |
○ |
HY013 |
メモリ管理エラー |
− |
× |
HY090 |
無効な文字列長または無効なバッファ長 |
BufferLengthに無効な値(SQL_NTS)が指定されました。 |
○ |
HYT01 |
接続タイムアウト終了 |
− |
× |
IM001 |
ドライバはこの関数をサポートしていない |
× |
- (凡例)
-
○:HADB ODBCドライバが返すことがあるSQLSTATEです。
×:HADB ODBCドライバが返さないSQLSTATEです。
−:なし。