Freigeben über


SQLPutData

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics Analytics Platform System (PDW)

Die folgenden Einschränkungen gelten beim Verwenden von SQLPutData zum Senden von mehr als 65.535 Byte von Daten (für SQL Server, Version 4.21a) oder 400 KB Von Daten (für SQL Server, Version 6.0 und höher) für eine SQL_LONGVARCHAR (Text), SQL_WLONGVARCHAR (ntext) oder SQL_LONGVARBINARY (Bild) Spalte:

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

  • Der referenzierte Parameter kann ein Ausdruck in der SET-Klausel einer UPDATE-Anweisung sein.

Durch das Abbrechen einer Abfolge von SQLPutData-Aufrufen, die Daten in Blöcken für einen Server bereitstellen, auf dem SQL Server ausgeführt wird, wird bei Verwendung von Version 6.5 oder früher eine partielle Aktualisierung des Spaltenwerts verursacht. Die Text-, ntext- oder Bildspalte , auf die verwiesen wurde, wenn SQLCancel aufgerufen wurde, wird auf einen Zwischenplatzhalterwert festgelegt.

Hinweis

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

Diagnostik

Es gibt einen SQL Server Native Client spezifische SQLSTATE für SQLPutData:

SQLSTATE Error 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 Gesamtanzahl der by der Anwendung über SQLPutData angegebenen Bytes mit der angegebenen Länge übereinstimmen.

SQLPutData und Tabellenwertparameter

SQLPutData wird von einer Anwendung verwendet, wenn die Variable Zeilenbindung mit Tabellenwertparametern verwendet wird. Der parameter StrLen_Or_Ind gibt an, dass der Treiber daten für die nächsten Zeilen oder Zeilen mit Parameterdaten mit Tabellenwert sammeln kann 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 jedoch auf einen Wert ungleich NULL festgelegt werden. Weitere Informationen finden Sie im Abschnitt "Zeilenbindung variabler TVP" in "Binding" und "Data Transfer of Table-Valued Parameters" und "Column Values".

Wenn StrLen_Or_Ind einen anderen Wert als SQL_DEFAULT_PARAM oder eine Zahl zwischen 0 und dem SQL_PARAMSET_SIZE hat (d. h. den ColumnSize-Parameter von SQLBindParameter), ist dies ein 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 "Table-Valued Parameters (ODBC)".

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

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

Weitere Informationen finden Sie unter "Datums- und Uhrzeitverbesserungen (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-Implementierungsdetails