SQLBindCol

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Som en allmän regel, överväg konsekvenserna av att använda SQLBindCol för att orsaka datakonvertering. Bindningskonverteringar är klientprocesser, så till exempel gör att hämta ett flyttalsvärde bundet till en teckenkolumn att drivrutinen utför flyttal-till-tecken-konverteringen lokalt när en rad hämtas. Funktionen Transact-SQL CONVERT kan användas för att lägga kostnaden för datakonvertering på servern.

En instans av SQL Server kan returnera flera uppsättningar resultatrader vid en enda satsexekvering. Varje resultatmängd måste bindas separat. För mer information om bindning för flera resultatuppsättningar, se SQLMoreResults.

Utvecklaren kan binda kolumner till SQL Server-specifika C-datatyper med hjälp av TargetType-värdetSQL_C_BINARY. Kolumner som är bundna till SQL Server-specifika typer är inte portabla. De definierade SQL Server-specifika ODBC C-datatyperna stämmer överens med typdefinitionerna för DB-Library, och DB-Library utvecklare som portar applikationer kan vilja dra nytta av denna funktion.

Rapportering av datatrunkering är en kostsam process för SQL Server Native Client ODBC-drivrutinen. Du kan undvika trunkering genom att se till att alla bundna databuffertar är tillräckligt breda för att returnera data. För teckendata bör bredden inkludera utrymme för en strängterminator när standarddrivrutinsbeteendet för strängterminering används. Till exempel innebär bindning av en SQL Server char(5)-kolumn till en array med fem tecken en trunkering för varje värde som hämtas. Att binda samma kolumn till en array med sex tecken undviker trunkeringen genom att tillhandahålla ett teckenelement för att lagra nullterminatorn. SQLGetData kan användas för att effektivt hämta långtecken- och binärdata utan att behöva förkortas.

För datatyper med stora värden, om den användartillhandahållna bufferten inte är tillräckligt stor för att hålla hela kolumnens värde, returneras SQL_SUCCESS_WITH_INFO och "strängdatan; höger avkortning" varning utfärdas. Argumentet StrLen_or_IndPtr innehåller antalet tecken/byte som lagras i bufferten.

SQLBindCol-stöd för förbättrade datum- och tidsfunktioner

Resultatkolumnvärden för datum/tid-typer konverteras enligt beskrivningen i Konverteringar från SQL till C. Observera att för att hämta tid- och datumtidsavskjutningskolumner som motsvarande strukturer (SQL_SS_TIME2_STRUCT och SQL_SS_TIMESTAMPOFFSET_STRUCT) måste TargetType anges som SQL_C_DEFAULT eller SQL_C_BINARY.

Mer information finns i Förbättringar av datum och tid (ODBC).

SQLBindCol-stöd för stora CLR UDT:er

SQLBindCol stöder stora CLR-användardefinierade typer (UDT). Mer information finns i Large CLR User-Defined Types (ODBC).