C から SQL へ: 数値

数値 ODBC C データ型の識別子は次のとおりです。

SQL_C_STINYINT

SQL_C_SLONG

SQL_C_UTINYINT

SQL_C_ULONG

SQL_C_TINYINT

SQL_C_LONG

SQL_C_SSHORT

SQL_C_FLOAT

SQL_C_USHORT

SQL_C_DOUBLE

SQL_C_SHORT

SQL_C_NUMERIC

SQL_C_SBIGINT

SQL_C_UBIGINT

次の表は、数値 C データの変換先となる ODBC SQL データ型を示しています。 テーブル内の列と用語の詳細については、「 C から SQL データ型へのデータの変換」を参照してください。

SQL 型識別子 テスト SQLSTATE
SQL_CHAR

SQL_VARCHAR

SQL_LONGVARCHAR
桁数 <= 列バイト長

桁数 > 列のバイト長
該当なし

22001
SQL_WCHAR

SQL_WVARCHAR

SQL_WLONGVARCHAR
文字数 <= 列文字の長さ

文字数 列の > 文字数
該当なし

22001
SQL_DECIMAL[b]

SQL_NUMERIC[b]

SQL_TINYINT[b]

SQL_SMALLINT[b]

SQL_INTEGER[b]

SQL_BIGINT[b]
切り捨てなしで、または小数部の桁を切り捨てて変換されたデータ

整数の切り捨てで変換されたデータ
該当なし

22003
SQL_REAL

SQL_FLOAT

SQL_DOUBLE
データが、数値の変換先のデータ型の範囲内にある

データが、数値の変換先となるデータ型の範囲外である
該当なし

22003
SQL_BIT データが 0 または 1 である

データが 0 より大きく、2 未満で、1 と等しくない

データが 0 より小さいか、2 以上である
該当なし

22001

22003
SQL_INTERVAL_YEAR[a]

SQL_INTERVAL_MONTH[a]

SQL_INTERVAL_DAY[a]

SQL_INTERVAL_HOUR[a]

SQL_INTERVAL_MINUTE[a]

SQL_INTERVAL_SECOND[a]
データが切り捨てられません。

データが切り捨てられました。
該当なし

22015

[a] これらの変換は、正確な数値データ型 (SQL_C_STINYINT、SQL_C_UTINYINT、SQL_C_SSHORT、SQL_C_USHORT、SQL_C_SLONG、SQL_C_ULONG、またはSQL_C_NUMERIC) に対してのみサポートされます。 これらは、おおよその数値データ型 (SQL_C_FLOATまたはSQL_C_DOUBLE) ではサポートされていません。 正確な数値 C データ型は、間隔の有効桁数が 1 つのフィールドではない間隔 SQL 型に変換できません。

[b] "n/a" の場合、小数部の切り捨てがある場合、ドライバーは必要に応じてSQL_SUCCESS_WITH_INFOと 01S07 を返す場合があります。

ドライバーは、数値 C データ型からデータを変換するときに長さ/インジケーター値を無視し、データ バッファーのサイズが数値 C データ型のサイズであると想定します。 長さ/インジケーター値は、SQLPutDataStrLen_or_Ind 引数と、SQLBindParameterStrLen_or_IndPtr 引数で指定されたバッファーに渡されます。 データ バッファーは、SQLPutDataDataPtr 引数と SQLBindParameterParameterValuePtr 引数で指定されます。