Delen via


SQLPutData

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

De volgende beperkingen gelden voor het gebruik van SQLPutData voor het verzenden van meer dan 65.535 bytes aan gegevens (voor SQL Server versie 4.21a) of 400 KB aan gegevens (voor SQL Server-versie 6.0 en hoger) voor een SQL_LONGVARCHAR (tekst), SQL_WLONGVARCHAR (ntext) of SQL_LONGVARBINARY (afbeelding) kolom:

  • De parameter waarnaar wordt verwezen, kan de insert_value zijn in een INSERT-instructie.

  • De parameter waarnaar wordt verwezen, kan een expressie zijn in de SET-component van een UPDATE-instructie.

Als u een reeks SQLPutData-aanroepen annuleert die gegevens in blokken leveren aan een server waarop SQL Server wordt uitgevoerd, wordt de waarde van de kolom gedeeltelijk bijgewerkt wanneer u versie 6.5 of eerder gebruikt. De tekst, ntextof afbeelding kolom waarnaar wordt verwezen toen SQLCancel werd aangeroepen, is ingesteld op een tussenliggende tijdelijke aanduidingswaarde.

Notitie

Het ODBC-stuurprogramma van sql Server Native Client biedt geen ondersteuning voor het maken van verbinding met SQL Server versie 6.5 en eerder.

Diagnostiek

Er is één SQL Server Native Client-specifieke SQLSTATE voor SQLPutData:

SQLSTATE Fout Beschrijving
22026 Tekenreeksgegevens, lengte komt niet overeen Als de lengte van de te verzenden gegevens in bytes is opgegeven door een toepassing, bijvoorbeeld met SQL_LEN_DATA_AT_EXEC(n) waarbij n groter is dan 0, moet het totale aantal bytes van de toepassing via SQLPutData overeenkomen met de opgegeven lengte.

SQLPutData- en Table-Valued-parameters

SQLPutData wordt door een toepassing gebruikt bij het gebruik van variabele rijbinding met parameters met tabelwaarden. De parameter StrLen_Or_Ind geeft aan dat het stuurprogramma gereed is voor het verzamelen van gegevens voor de volgende rij of rijen met parametergegevens met tabelwaarden of dat er geen rijen meer beschikbaar zijn:

  • Een waarde groter dan 0 geeft aan dat de volgende set rijwaarden beschikbaar is.

  • Een waarde van 0 geeft aan dat er geen rijen meer moeten worden verzonden.

  • Elke waarde kleiner dan 0 is een fout en resulteert in een diagnostische record die wordt geregistreerd met SQLState HY090 en het bericht 'Ongeldige tekenreeks of bufferlengte'.

De parameter DataPtr wordt genegeerd, maar moet worden ingesteld op een niet-NULL-waarde. Zie de sectie over variabele TVP-rijbinding in binding en gegevensoverdracht van Table-Valued parameters en kolomwaardenvoor meer informatie.

Als StrLen_Or_Ind een andere waarde heeft dan SQL_DEFAULT_PARAM of een getal tussen 0 en de SQL_PARAMSET_SIZE (dat wil gezegd, is de parameter ColumnSize van SQLBindParameter) een fout. Deze fout zorgt ervoor dat SQLPutData SQL_ERROR retourneert: SQLSTATE=HY090, 'Ongeldige tekenreeks of bufferlengte'.

Zie Table-Valued Parameters (ODBC)voor meer informatie over parameters met tabelwaarden.

SQLPutData-ondersteuning voor uitgebreide functies voor datum en tijd

Parameterwaarden van datum-/tijdtypen worden geconverteerd zoals beschreven in Conversies van C naar SQL.

Zie ODBC-(Datum- en tijdverbeteringen) voor meer informatie.

SQLPutData-ondersteuning voor grote CLR-UDT's

SQLPutData- ondersteunt grote door de gebruiker gedefinieerde CLR-typen (UDT's). Zie ODBC-(Large CLR User-Defined Types) voor meer informatie.

Zie ook

SQLPutData-functie
odbc-API-implementatiedetails