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 |
數位 < 數 = 資料行位元組長度 位數 > 資料行位元組長度 |
n/a 22001 |
SQL_WCHAR SQL_WVARCHAR SQL_WLONGVARCHAR |
字元 < 數 = 資料行字元長度 字元 > 數 資料行字元長度 |
n/a 22001 |
SQL_DECIMAL[b] SQL_NUMERIC[b] SQL_TINYINT[b] SQL_SMALLINT[b] SQL_INTEGER[b] SQL_BIGINT[b] |
未截斷或小數位數截斷的資料轉換 以截斷整數轉換的資料 |
n/a 22003 |
SQL_REAL SQL_FLOAT SQL_DOUBLE |
資料位於要轉換數位的資料類型範圍內 資料超出要轉換數位的資料類型範圍 |
n/a 22003 |
SQL_BIT | 資料為 0 或 1 資料大於 0、小於 2 且不等於 1 資料小於 0 或大於或等於 2 |
n/a 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] |
資料未截斷。 資料已截斷。 |
n/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 資料類型無法轉換成間隔 SQL 類型,其間隔有效位數不是單一欄位。
[b] 針對 「n/a」 案例,當有小數截斷時,驅動程式可能會選擇性地傳回 SQL_SUCCESS_WITH_INFO 和 01S07。
驅動程式會忽略從數值 C 資料類型轉換資料時的長度/指標值,並假設資料緩衝區的大小是數值 C 資料類型的大小。 長度/指標值會在 SQLPutData 中的 StrLen_or_Ind 引數和 SQLBindParameter 中以 StrLen_or_IndPtr 引數 指定的 緩衝區中傳遞 。 資料緩衝區是以 SQLPutData 中的 DataPtr 引數和 SQLBindParameter 中的 ParameterValuePtr 引數來指定 。