SQLPutData
Beim Verwenden von SQLPutData zum Senden von 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 Spalte des Typs SQL_LONGVARCHAR (text), SQL_WLONGVARCHAR (ntext) oder SQL_LONGVARBINARY (image) gelten die folgenden Einschränkungen:
Der Parameter, auf den verwiesen wird, kann insert_value in einer INSERT-Anweisung sein.
Der Parameter, auf den verwiesen wird, kann expression in der SET-Klausel einer UPDATE-Anweisung sein.
Das Abbrechen einer Sequenz von SQLPutData-Aufrufen, die einem Server, auf dem SQL Server ausgeführt wird, Daten in Blöcken bereitstellt, führt zu einer teilweisen Aktualisierung des Spaltenwerts, wenn Version 6.5 oder niedriger verwendet wird. Für die text-, ntext- oder image-Spalte, auf die beim Aufrufen von SQLCancel verwiesen wurde, wird ein Platzhalterzwischenwert festgelegt.
Hinweis |
---|
Der SQL Server Native Client OLE DB-Treiber unterstützt das Herstellen einer Verbindung mit der SQL Server-Version 6.5 und niedriger nicht. |
Diagnose
Es gibt einen für SQL Server Native Client-spezifischen SQLSTATE für SQLPutData:
SQLSTATE |
Fehler |
Beschreibung |
---|---|---|
22026 |
Zeichenfolgendaten, nicht übereinstimmende Länge |
Wenn von einer Anwendung die Länge der zu sendenden Daten in Bytes angegeben wurde, beispielsweise mit SQL_LEN_DATA_AT_EXEC(n), wobei n größer als 0 ist, muss die Gesamtanzahl von Bytes, die von der Anwendung über SQLPutData angegeben wird, mit der angegebenen Länge übereinstimmen. |
SQLPutData und Tabellenwertparameter
Bei Verwendung der variablen Zeilenbindung mit Tabellenwertparametern wird SQLPutData von einer Anwendung verwendet. Der StrLen_Or_Ind-Parameter zeigt an, dass die Anwendung dafür bereit ist, dass der Treiber für die nächste(n) Zeile(n) mit Tabellenwertparameterdaten Daten sammelt, oder dass keine Zeilen mehr 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, für ihn muss jedoch ein Wert ungleich NULL festgelegt werden. Weitere Informationen finden Sie im Abschnitt „Variable Tabellenwertparameter-Zeilenbindung“ in Bindung und Datenübertragung von Tabellenwertparametern und Spaltenwerten.
Wenn StrLen_Or_Ind einen anderen Wert als SQL_DEFAULT_PARAM oder eine Zahl zwischen 0 und SQL_PARAMSET_SIZE (d. h. der ColumnSize-Parameter von SQLBindParameter) aufweist, 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 Tabellenwertparameter (ODBC).
SQLPutData-Unterstützung für verbesserte Funktionen für Datum/Uhrzeit
Parameterwerte von Datum-/Uhrzeit-Typen werden konvertiert, wie in Konvertierungen von C in SQL beschrieben.
Weitere Informationen finden Sie unter Datums-/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 Große benutzerdefinierte CLR-Typen (ODBC).