指定の C データ・タイプについて、次の内容がリストされています。
注: | SQLSTATE が 00000 (正常実行) の場合に限り、データがデータ・ソースに送られます。 |
表では、指定の SQL データ・タイプにとって有効になるよう ODBC で定義された変換をリストします。
SQLBindParameter() または SQLSetParam() の fSqlType 引き数に、指定の C データ・タイプについて表にない値が含まれている場合、 SQLSTATE 07006 (データ・タイプ属性制約違反) が戻されます。
fSqlType 引き数に、表にはあっても、ドライバーでサポートされていない変換を指定する値が含まれていると、 SQLBindParameter() または SQLSetParam() は、 SQLSTATE HYC00 (ドライバー不可) を戻します。
SQLBindParameter() または SQLSetParam() に指定された rgbValue および pcbValue 引き数が両方ともヌル・ポインターである場合、その関数は SQLSTATE HY009 (引き数値が無効です) を戻します。
文字 C データ・タイプは次のとおりです。
fSQLType | Test | SQLSTATE | ||
---|---|---|---|---|
SQL_CHAR SQL_VARCHAR SQL_LONGVARCHAR SQL_CLOB | データ長 <= 列長 | 00000 | ||
データ長 > 列長 | 22001 | |||
SQL_DECIMAL SQL_NUMERIC SQL_SMALLINT SQL_INTEGER SQL_REAL SQL_FLOAT SQL_DOUBLE | 切り捨てられずに変換されたデータ | 00000 | ||
変換され切り捨てられたデータ、ただし有効桁は失われていない | 22001 | |||
データ変換の結果、有効桁が消失する | 22003 | |||
データ値は数値ではない | 22005 | |||
SQL_BINARY SQL_VARBINARY SQL_LONGVARBINARY SQL_BLOB | (データ長) < 列長 | なし | ||
(データ長) >= 列長 | 22001 | |||
データ値は 16 進値ではない | 22005 | |||
SQL_DATE | データ値は有効な日付 | 00000 | ||
データ値は有効な日付ではない | 22007 | |||
SQL_TIME | データ値は有効な時刻 | 00000 | ||
データ値は有効な時刻ではない | 22007 | |||
SQL_TIMESTAMP | データ値は有効なタイム・スタンプ | 00000 | ||
データ値は有効なタイム・スタンプではない | 22007 | |||
SQL_GRAPHIC SQL_VARGRAPHIC SQL_LONGVARGRAPHIC SQL_DBCLOB | データ長 / 2 <= 列長 | 00000 | ||
データ長 / 2 < 列長 | 22001 | |||
|
数値 C データ・タイプは次のとおりです。
fSQLType | Test | SQLSTATE | ||
---|---|---|---|---|
SQL_DECIMAL SQL_NUMERIC SQL_SMALLINT SQL_INTEGER SQL_REAL SQL_FLOAT SQL_DOUBLE | 切り捨てられずに変換されたデータ | 00000 | ||
変換され切り捨てられたデータ、ただし有効桁は失われていない | 22001 | |||
データ変換の結果、有効桁が消失する | 22003 | |||
SQL_CHAR SQL_VARCHAR | 切り捨てられずに変換されたデータ | 00000 | ||
データの変換で有効桁が失われる | 22003 | |||
|
2 進 C データ・タイプは次のとおりです。
表 208. 2 進 C データから SQL データへの変換
fSQLType | Test | SQLSTATE |
---|---|---|
SQL_CHAR SQL_VARCHAR SQL_LONGVARCHAR SQL_CLOB | データ長 <= 列長 | なし |
データ長 > 列長 | 22001 | |
SQL_BINARY SQL_VARBINARY SQL_LONGVARBINARY SQL_BLOB | データ長 <= 列長 | なし |
データ長 > 列長 | 22001 |
2 バイト C データ・タイプは次のとおりです。
表 209. DBCHAR C データから SQL データへの変換
fSQLType | Test | SQLSTATE |
---|---|---|
SQL_CHAR SQL_VARCHAR SQL_LONGVARCHAR SQL_CLOB | データ長 <= 列長 x 2 | なし |
データ長 > 列長 x 2 | 22001 | |
SQL_BINARY SQL_VARBINARY SQL_LONGVARBINARY SQL_BLOB | データ長 <= 列長 x 2 | なし |
データ長 > 列長 x 2 | 22001 |
日付 C データ・タイプは次のとおりです。
fSQLType | Test | SQLSTATE | ||||
---|---|---|---|---|---|---|
SQL_CHAR SQL_VARCHAR | 列長 >= 10 | 00000 | ||||
列長 < 10 | 22003 | |||||
SQL_DATE | データ値は有効な日付 | 00000 | ||||
データ値は有効な日付ではない | 22007 | |||||
SQL_TIMESTAMP a | データ値は有効な日付 | 00000 | ||||
データ値は有効な日付ではない | 22007 | |||||
|
時刻 C データ・タイプは次のとおりです。
fSQLType | Test | SQLSTATE | ||||
---|---|---|---|---|---|---|
SQL_CHAR SQL_VARCHAR | 列長 >= 8 | 00000 | ||||
列長 < 8 | 22003 | |||||
SQL_TIME | データ値は有効な時刻 | 00000 | ||||
データ値は有効な時刻ではない | 22007 | |||||
SQL_TIMESTAMP a | データ値は有効な時刻 | 00000 | ||||
データ値は有効な時刻ではない | 22007 | |||||
|
タイム・スタンプ C データ・タイプは次のとおりです。
表 212. タイム・スタンプ C データから SQL データへの変換
fSQLType | Test | SQLSTATE | ||
---|---|---|---|---|
SQL_CHAR SQL_VARCHAR | 列長 >= 表示サイズ | 00000 | ||
19 <= 列長 < 表示サイズ a | 22001 | |||
列長 < 19 | 22003 | |||
SQL_DATE | データ値は有効な日付 b | 22001 | ||
データ値は有効な日付ではない | 22007 | |||
SQL_TIME | データ値は有効な時刻 c | 22001 | ||
データ値は有効な時刻ではない | 22007 | |||
SQL_TIMESTAMP | データ値は有効なタイム・スタンプ | 00000 | ||
データ値は有効なタイム・スタンプではない | 22007 | |||
SQLSTATE 00000 は SQLError() では戻されません。これは、関数が SQL_SUCCESS を戻すときに示されます。 |
C データ・タイプ | C データ値 | SQL データ・タイプ | 列長 | SQL データ値 | SQL STATE | ||
---|---|---|---|---|---|---|---|
SQL_C_CHAR | abcdef\0 | SQL_CHAR | 6 | abcdef | 00000 | ||
SQL_C_CHAR | abcdef\0 | SQL_CHAR | 5 | abcde | 22001 | ||
SQL_C_CHAR | 1234.56\0 | SQL_DECIMAL | 6 | 1234.56 | 00000 | ||
SQL_C_CHAR | 1234.56\0 | SQL_DECIMAL | 5 | 1234.5 | 22001 | ||
SQL_C_CHAR | 1234.56\0 | SQL_DECIMAL | 3 | --- | 22003 | ||
SQL_C_FLOAT | 1234.56 | SQL_FLOAT |
該当せず | 1234.56 | 00000 | ||
SQL_C_FLOAT | 1234.56 | SQL_INTEGER |
該当せず | 1234 | 22001 | ||
|