SQLPutData

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Die folgenden Einschränkungen gelten, wenn SQLPutData verwendet wird, um mehr als 65.535 Byte Daten (für SQL Server Version 4.21a) oder 400 KB Daten (für SQL Server Version 6.0 und höher) für eine SQL_LONGVARCHAR (Text), SQL_WLONGVARCHAR (ntext) oder SQL_LONGVARBINARY (Image) Spalte zu senden:

  • Der Parameter, auf den verwiesen wird, kann der insert_value in einer INSERT-Anweisung sein.

  • Der Parameter, auf den verwiesen wird, kann ein Ausdruck in der SET-Klausel einer UPDATE-Anweisung sein.

Das Abbrechen einer Sequenz von SQLPutData-Aufrufen, die Daten in Blöcken für einen Server bereitstellen, auf dem SQL Server ausgeführt wird, führt bei Verwendung von Version 6.5 oder früher zu einer teilweisen Aktualisierung des Spaltenwerts. Die Text-, ntext- oder Bildspalte , auf die beim Aufruf von SQLCancel verwiesen wurde, wird auf einen zwischengeschalteten Platzhalterwert festgelegt.

Hinweis

Der SQL Server Native Client ODBC-Treiber unterstützt keine Verbindung mit SQL Server Version 6.5 und früher.

Diagnose

Es gibt eine SQL Server Native Client spezifischen SQLSTATE für SQLPutData:

SQLSTATE Fehler BESCHREIBUNG
22026 Zeichenfolgendaten, nicht übereinstimmende Länge Wenn die Länge der zu sendenden Daten in Bytes von einer Anwendung angegeben wurde, z. B. mit SQL_LEN_DATA_AT_EXEC(n), wobei n größer als 0 ist, muss die Gesamtzahl der bytes, die von der Anwendung über SQLPutData angegeben wird, der angegebenen Länge entsprechen.

SQLPutData und Tabellenwertparameter

SQLPutData wird von einer Anwendung verwendet, wenn die Variablenzeilenbindung mit Tabellenwertparametern verwendet wird. Der parameter StrLen_Or_Ind gibt an, dass der Treiber bereit ist, Daten für die nächste Zeile oder Zeilen von Tabellenwertparameterdaten zu sammeln, oder dass keine weiteren Zeilen verfügbar sind:

  • Ein Wert größer als 0 gibt an, dass der nächste Satz von Zeilenwerten verfügbar ist.

  • Der Wert 0 gibt an, dass es keine Zeilen mehr gibt, die gesendet werden sollen.

  • Ein Wert unter 0 zeigt einen Fehler an und führt dazu, dass ein Diagnosedatensatz mit SQLState HY090 aufgezeichnet und die Meldung „Ungültige Zeichenfolge oder Pufferlänge“ ausgegeben wird.

Der DataPtr-Parameter wird ignoriert, muss aber auf einen Wert ungleich NULL festgelegt werden. Weitere Informationen finden Sie im Abschnitt variable TVP-Zeilenbindung unter Bindung und Datenübertragung von Table-Valued Parametern und Spaltenwerten.

Wenn StrLen_Or_Ind einen anderen Wert als SQL_DEFAULT_PARAM oder eine Zahl zwischen 0 und dem SQL_PARAMSET_SIZE (d. h. den ColumnSize-Parameter von SQLBindParameter) aufweist, handelt es sich um einen Fehler. Dieser Fehler bewirkt, dass SQLPutData SQL_ERROR: SQLSTATE=HY090, "Ungültige Zeichenfolge oder Pufferlänge" zurückgibt.

Weitere Informationen zu Tabellenwertparametern finden Sie unter Tabellenwertparameter (ODBC).

SQLPutData-Unterstützung für verbesserte Funktionen für Datum/Uhrzeit

Parameterwerte von Datums-/Uhrzeittypen werden wie unter Konvertierungen von C in SQL beschrieben konvertiert.

Weitere Informationen finden Sie unter Verbesserungen an Datum und Uhrzeit (ODBC).

SQLPutData-Unterstützung für große CLR-UDTs

SQLPutData unterstützt große benutzerdefinierte CLR-Typen (UDTs). Weitere Informationen finden Sie unter Large CLR User-Defined Types (ODBC).

Weitere Informationen

SQLPutData-Funktion
ODBC API Implementation Details