Dela via


SQLPutData

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

Följande begränsningar gäller när du använder SQLPutData för att skicka mer än 65 535 byte data (för SQL Server version 4.21a) eller 400 KB data (för SQL Server version 6.0 och senare) för en SQL_LONGVARCHAR (text), SQL_WLONGVARCHAR (ntext) eller SQL_LONGVARBINARY (bild) kolumn:

  • Den refererade parametern kan vara insert_value i en INSERT-instruktion.

  • Den refererade parametern kan vara ett uttryck i SET-satsen i en UPDATE-instruktion.

Om du avbryter en sekvens med SQLPutData-anrop som tillhandahåller data i block till en server som kör SQL Server, medför det en partiell uppdatering av kolumnens värde när du använder version 6.5 eller tidigare. Den texten, ntexteller bild kolumn som refererades när SQLCancel anropades anges till ett mellanliggande platshållarvärde.

Not

ODBC-drivrutinen för den interna SQL Server-klienten stöder inte anslutning till SQL Server version 6.5 och tidigare.

Diagnostik

Det finns en SQL Server Native Client-specifik SQLSTATE för SQLPutData:

SQLSTATE Fel Beskrivning
22026 Strängdata, längdmatchningsfel Om längden på data i byte som ska skickas har angetts av ett program, till exempel med SQL_LEN_DATA_AT_EXEC(n) där n är större än 0, måste det totala antalet byte som ges av programmet via SQLPutData matcha den angivna längden.

SQLPutData- och Table-Valued parametrar

SQLPutData används av ett program när du använder variabelradbindning med tabellvärdesparametrar. Parametern StrLen_Or_Ind anger att drivrutinen är redo att samla in data för nästa rad eller rader med tabellvärdesparameterdata, eller att inga fler rader är tillgängliga:

  • Ett värde större än 0 anger att nästa uppsättning radvärden är tillgängliga.

  • Värdet 0 anger att det inte finns några fler rader att skicka.

  • Ett värde under 0 är ett fel och resulterar i att en diagnostikpost loggas med SQLState HY090 och meddelandet "Ogiltig sträng- eller buffertlängd".

Parametern DataPtr ignoreras, men måste anges till ett värde som inte är NULL. Mer information finns i avsnittet om variabel TVP-radbindning i Bindning och dataöverföring av Table-Valued parametrar och kolumnvärden.

Om StrLen_Or_Ind har något annat värde än SQL_DEFAULT_PARAM eller ett tal mellan 0 och SQL_PARAMSET_SIZE (d.v.s. parametern ColumnSize för SQLBindParameter) är det ett fel. Det här felet gör att SQLPutData returnerar SQL_ERROR: SQLSTATE=HY090, "Ogiltig sträng- eller buffertlängd".

Mer information om tabellvärdesparametrar finns i Table-Valued Parameters (ODBC).

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

Parametervärden för datum/tid-typer konverteras enligt beskrivningen i Konverteringar från C till SQL.

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

SQLPutData-stöd för stora CLR UDT

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

Se även

SQLPutData-funktion
ODBC API-implementeringsinformation