SQLBindCol
根據一般性規則,請考量使用 SQLBindCol 造成資料轉換的含意。例如,繫結轉換為用戶端處理序,所以擷取繫結至字元資料行的浮點值時,將會造成驅動程式在提取資料列時,於本機執行浮點對字元的轉換。使用 Transact-SQL CONVERT 函數可將資料轉換的成本置於伺服器上。
SQL Server 執行個體可以在單一陳述式執行中傳回多個結果資料列集。每個結果集都必須個別繫結。如需有關多個結果集之繫結的詳細資訊,請參閱<SQLMoreResults>。
開發人員可以使用 TargetType 值 SQL_C_BINARY,將資料行繫結至 SQL Server 特有的 C 資料類型。繫結至 SQL Server 特有之類型的資料行無法移植。已定義的 SQL Server 特有 ODBC C 資料類型符合 DB-Library 的類型定義,而移植應用程式的 DB-Library 開發人員可能會想要利用這項功能。
報告資料截斷是 SQL Server Native Client ODBC 驅動程式的一項耗費大量成本的處理。您可以確保所有繫結的資料緩衝區都夠寬而足以傳回資料,藉此來避免資料遭到截斷。如果是字元資料,當使用字串結束的預設驅動程式行為時,寬度應該包括字串結束字元的空格。例如,將 SQL Serverchar(5) 資料行繫結至五個字元的陣列會導致每一個提取的值遭到截斷。將相同的資料行繫結至六個字元的陣列可藉由提供字元元素來儲存 Null 結束字元,以避免截斷的情況發生。SQLGetData 可用來有效率地擷取長的字元和二進位資料,而不會發生截斷情形。
如果是大型值資料類型,而且使用者提供的緩衝區不夠大,所以無法保存資料行的完整值時,就會傳回 SQL_SUCCESS_WITH_INFO,而且會發出「字串資料; 正確截斷」的警告。StrLen_or_IndPtr 引數將會包含儲存在緩衝區內的字元/位元組數目。
SQLBindCol 對於增強型日期和時間功能的支援
日期/時間類型的結果資料行值會經過轉換,如<從 SQL 轉換成 C>中所述。請注意,若要將 time 和 datetimeoffset 資料行當做其對應的結構 (SQL_SS_TIME2_STRUCT 和 SQL_SS_TIMESTAMPOFFSET_STRUCT) 來擷取,TargetType 必須指定為 SQL_C_DEFAULT 或 SQL_C_BINARY。
如需詳細資訊,請參閱<ODBC 日期/時間的改善 (ODBC)>。