指定の SQL データ・タイプについて、次の内容がリストされています。
表では、指定の SQL データ・タイプにとって有効になるよう ODBC で定義された変換をリストします。
SQLBindCol() または SQLGetData() の fCType 引き数に、所定の SQL データ・タイプについて表にない値が含まれていると、 SQLFetch() または SQLGetData() は、 SQLSTATE 07006 (データ・タイプ属性制約違反) を戻します。
fCType 引き数に、表にはあっても、ドライバーでサポートされていない変換を指定する値が含まれていると、 SQLFetch() または SQLGetData() は、 SQLSTATE HYC00 (ドライバー不可) を戻します。
表には示されていませんが、pcbValue 引き数には、 SQL データ値が NULL のときの SQL_NULL_DATA が含まれます。データを取り出す場合に複数呼び出しが行われる際の pcbValue の使用法に関する説明は、 SQLGetData() を参照してください。
SQL データが文字 C データに変換される際に、 pcbValue に戻される文字カウントにはヌル終了バイトは含まれません。 rgbValue が NULL ポインターの場合、 SQLBindCol() または SQLGetData() は、 SQLSTATE HY009 (無効な引き数値) を戻します。
表では、次の用語が使われています。
文字 SQL データ・タイプは次のとおりです。
fCType | Test | rgbValue | pcbValue | SQLSTATE | ||
---|---|---|---|---|---|---|
SQL_C_CHAR | データ長 < cbValueMax | データ | データの長さ | 00000 | ||
データ長 >= cbValueMax | 切り捨てデータ | データの長さ | 01004 | |||
SQL_C_BINARY | データ長 <= cbValueMax | データ | データの長さ | 00000 | ||
データ長 > cbValueMax | 切り捨てデータ | データの長さ | 01004 | |||
SQL_C_SHORT SQL_C_LONG SQL_C_FLOAT SQL_C_FLOAT SQL_C_TINYINT SQL_C_BIT SQL_C_UBIGINT SQL_C_SBIGINT SQL_C_NUMERIC c | 切り捨てられずに変換されたデータ a | データ | C データ・タイプのサイズ |
00000 | ||
変換され切り捨てられたデータ、ただし有効桁は失われていない a | データ | C データ・タイプのサイズ | 01004 | |||
データの変換で、有効桁が失われる a | 影響なし | C データ・タイプのサイズ | 22003 | |||
データは数値でない a | 影響なし | C データ・タイプのサイズ | 22005 | |||
SQL_C_DATE | データ値は有効な時刻 a | データ | 6 b | 00000 | ||
データ値は有効な時刻ではない a | 影響なし | 6 b | 22007 | |||
SQL_C_TIME | データ値は有効な時刻 a | データ | 6 b | 00000 | ||
データ値は有効な時刻ではない a | 影響なし | 6 b | 22007 | |||
SQL_C_TIMESTAMP | データ値は有効なタイム・スタンプ a | データ | 16 b | 00000 | ||
データ値は有効なタイム・スタンプではない a | 影響なし | 16 b | 22007 | |||
SQLSTATE 00000 は SQLError() では戻されません。これは、関数が SQL_SUCCESS を戻すときに示されます。 |
グラフィック SQL データ・タイプは、以下のとおりです。
表 199. SQL グラフィック・データを C データに変換
fCType | Test | rgbValue | pcbValue | SQLSTATE | ||
---|---|---|---|---|---|---|
SQL_C_CHAR | 2 バイト文字数 * 2 <= cbValueMax | データ | データの長さ (オクテット) | 00000 | ||
2 バイト文字数 * 2 > cbValueMax | cbValueMax 未満の最大偶数バイトに切り捨てられたデータ | データの長さ (オクテット) | 01004 | |||
SQL_C_DBCHAR | 2 バイト文字数 * 2 < cbValueMax | データ | データの長さ (オクテット) | 00000 | ||
2 バイト文字数 * 2 >= cbValueMax | cbValueMax 未満の最大偶数バイトに切り捨てられたデータ | データの長さ (オクテット) | 01004 | |||
|
SQL 数値データ・タイプは、以下のとおりです。
fCType | Test | rgbValue | pcbValue | SQLSTATE | ||
---|---|---|---|---|---|---|
SQL_C_CHAR | 表示サイズ < cbValueMax | データ | データの長さ | 00000 | ||
有効桁数 < cbValueMax | 切り捨てデータ | データの長さ | 01004 | |||
有効桁数 >= cbValueMax | 影響なし | データの長さ | 22003 | |||
SQL_C_SHORT SQL_C_LONG SQL_C_FLOAT SQL_C_DOUBLE SQL_C_TINYINT SQL_C_BIT SQL_C_UBIGINT SQL_C_SBIGINT SQL_C_NUMERIC b | 切り捨てられずに変換されたデータ a | データ | C データ・タイプのサイズ | 00000 | ||
変換され切り捨てられたデータ、ただし有効桁は失われていない a | 切り捨てデータ | C データ・タイプのサイズ | 01004 | |||
データの変換で、有効桁が失われる a | 影響なし | C データ・タイプのサイズ | 22003 | |||
SQLSTATE 00000 は SQLError() では戻されません。これは、関数が SQL_SUCCESS を戻すときに示されます。 |
2 進 SQL データ・タイプは次のとおりです。
表 201. 2 進 SQL データから C データへの変換
fCType | Test | rgbValue | pcbValue | SQLSTATE |
---|---|---|---|---|
SQL_C_CHAR | (データ長) < cbValueMax | データ | データの長さ | なし |
(データ長) >= cbValueMax | 切り捨てデータ | データの長さ | 01004 | |
SQL_C_BINARY | データ長 <= cbValueMax | データ | データの長さ | なし |
データ長 > cbValueMax | 切り捨てデータ | データの長さ | 01004 |
日付 SQL データ・タイプは次のとおりです。
fCType | Test | rgbValue | pcbValue | SQLSTATE | ||
---|---|---|---|---|---|---|
SQL_C_CHAR | cbValueMax >= 11 | データ | 10 | 00000 | ||
cbValueMax < 11 | 影響なし | 10 | 22003 | |||
SQL_C_DATE | なしa | データ | 6 b | 00000 | ||
SQL_C_TIMESTAMP | なしa | データc | 16 b | 00000 | ||
SQLSTATE 00000 は SQLError() では戻されません。これは、関数が SQL_SUCCESS を戻すときに示されます。 |
日付 SQL データ・タイプが文字の C データ・タイプに変換される場合、ストリングは「yyyy-mm-dd」形式になります。
時刻 SQL データ・タイプは次のとおりです。
fCType | Test | rgbValue | pcbValue | SQLSTATE | ||
---|---|---|---|---|---|---|
SQL_C_CHAR | cbValueMax >= 9 | データ | 8 | 00000 | ||
cbValueMax < 9 | 影響なし | 8 | 22003 | |||
SQL_C_TIME | なしa | データ | 6 b | 00000 | ||
SQL_C_TIMESTAMP | なしa | データc | 16 b | 00000 | ||
SQLSTATE 00000 は SQLError() では戻されません。これは、関数が SQL_SUCCESS を戻すときに示されます。 |
時刻 SQL データ・タイプが文字の C データ・タイプに変換される場合、ストリングは「hh:mm:ss」形式になります。
タイム・スタンプ SQL データ・タイプは次のとおりです。
表 204. タイム・スタンプ SQL データから C データへの変換
fCType | Test | rgbValue | pcbValue | SQLSTATE | ||
---|---|---|---|---|---|---|
SQL_C_CHAR | 表示サイズ < cbValueMax | データ | データの長さ | 00000 | ||
19 <= cbValueMax <= 表示サイズ | 切り捨てデータ b | データの長さ | 01004 | |||
cbValueMax < 19 | 影響なし | データの長さ | 22003 | |||
SQL_C_DATE | なしa | 切り捨てデータ c | 6 e | 01004 | ||
SQL_C_TIME | なしa | 切り捨てデータ d | 6 e | 01004 | ||
SQL_C_TIMESTAMP | なしa | データ | 16 e | 00000 | ||
SQLSTATE 00000 は SQLError() では戻されません。これは、関数が SQL_SUCCESS を戻すときに示されます。 |
タイム・スタンプ SQL データ・タイプが文字の C データ・タイプに変換される場合、ストリングは「yyyy-mm-dd hh:mm:ss[.fff[fff]]」形式になります。
SQL データ・タイプ | SQL データ値 | C データ・タイプ | cbValue Max | rgbValue | SQL STATE | ||
---|---|---|---|---|---|---|---|
SQL_CHAR | abcdef | SQL_C_CHAR | 7 | abcdef\0 a | 00000 | ||
SQL_CHAR | abcdef | SQL_C_CHAR | 6 | abcde\0 a | 01004 | ||
SQL_DECIMAL | 1234.56 | SQL_C_CHAR | 8 | 1234.56\0 a | 00000 | ||
SQL_DECIMAL | 1234.56 | SQL_C_CHAR | 5 | 1234\0 a | 01004 | ||
SQL_DECIMAL | 1234.56 | SQL_C_CHAR | 4 | --- | 22003 | ||
SQL_DECIMAL | 1234.56 | SQL_C_FLOAT | 無視されます | 1234.56 | 00000 | ||
SQL_DECIMAL | 1234.56 | SQL_C_SHORT | 無視されます | 1234 | 01004 | ||
SQL_DATE | 1992-12-31 | SQL_C_CHAR | 11 | 1992-12-31\0 a | 00000 | ||
SQL_DATE | 1992-12-31 | SQL_C_CHAR | 10 | --- | 22003 | ||
SQL_DATE | 1992-12-31 | SQL_C_TIMESTAMP | 無視されます | 1992,12,31, 0,0,0,0 b | 00000 | ||
SQL_TIMESTAMP | 1992-12-31 23:45:55.12 | SQL_C_CHAR | 23 | 1992-12-31 23:45:55.12\0 a | 00000 | ||
SQL_TIMESTAMP | 1992-12-31 23:45:55.12 | SQL_C_CHAR | 22 | 1992-12-31 23:45:55.1\0 a | 01004 | ||
SQL_TIMESTAMP | 1992-12-31 23:45:55.12 | SQL_C_CHAR | 18 | --- | 22003 | ||
SQLSTATE 00000 は SQLError() では戻されません。これは、関数が SQL_SUCCESS を戻すときに示されます。 |