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 データ型のサイズであると想定します。 長さ/インジケーター値は、SQLPutData の StrLen_or_Ind 引数と、SQLBindParameter の StrLen_or_IndPtr 引数で指定されたバッファーに渡されます。 データ バッファーは、SQLPutData の DataPtr 引数と SQLBindParameter の ParameterValuePtr 引数で指定されます。