SQLPutData
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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).