SQLBindCol

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

一般情況下,請考慮使用 SQLBindCol 造成數據轉換的含意。 系結轉換是客戶端進程,因此,例如,擷取係結至字元數據行的浮點值會導致驅動程式在擷取數據列時執行浮點數轉換。 Transact-SQL CONVERT 函式可用來在伺服器上放置數據轉換的成本。

SQL Server 的實例可以在單一語句執行時傳回多個結果數據列集。 每個結果集都必須分開系結。 如需多個結果集系結的詳細資訊,請參閱 SQLMoreResults

開發人員可以使用 TargetTypeSQL_C_BINARY將數據行系結至 SQL Server 特定的 C 數據類型。 系結至 SQL Server 特定類型的數據行無法移植。 定義的 SQL Server 特定 ODBC C 數據類型符合 DB-Library 的類型定義,而移植應用程式的 DB-Library 開發人員可能會想要利用這項功能。

報告數據截斷是 SQL Server Native Client ODBC 驅動程式的昂貴程式。 您可以確定所有系結的數據緩衝區都足夠寬,以傳回數據,以避免截斷。 針對字元數據,使用字串終止的默認驅動程序行為時,寬度應該包含字元串終止符的空間。 例如,將 SQL Server char(5) 數據行系結至五個字元的陣列,會導致擷取的每個值截斷。 將相同的數據行系結至六個字元的陣列,可藉由提供用來儲存 Null 終止符的字元專案來避免截斷。 SQLGetData 可用來有效率地擷取長字元和二進位數據,而不需要截斷。

針對大型數值數據類型,如果使用者提供的緩衝區不夠大,無法保存數據行的整個值, 則會傳回SQL_SUCCESS_WITH_INFO ,並傳回 「string data;發出右截斷“警告。 StrLen_or_IndPtr自變數將包含儲存在緩衝區中的 chars/bytes 數目。

增強日期和時間功能的 SQLBindCol 支援

日期/時間類型的結果數據行值會轉換,如從 SQL 轉換成 C 中所述。請注意,若要擷取時間和 datetimeoffset 資料行作為對應的結構(SQL_SS_TIME2_STRUCT和SQL_SS_TIMESTAMPOFFSET_STRUCT),TargetType 必須指定為SQL_C_DEFAULTSQL_C_BINARY。

如需詳細資訊,請參閱 日期和時間改善 (ODBC)

大型 CLR UDT 的 SQLBindCol 支援

SQLBindCol 支援大型 CLR 使用者定義型別 (UDT)。 如需詳細資訊,請參閱 大型CLR使用者定義型別 (ODBC)

另請參閱

SQLBindCol 函式
ODBC API 實作詳細數據