SQLBindParameter
SQLBindParameter kann den Aufwand der Datenkonvertierung eliminieren, wenn er zum Bereitstellen von Daten für den SQL Server Native Client-ODBC-Treiber verwendet wird, was in einem deutlichen Leistungszuwachs für Client- und Serverkomponenten von Anwendungen resultiert. Zu den weiteren Vorteilen gehören geringere Verluste der Genauigkeit, wenn ungefähre numerische Datentypen eingefügt oder aktualisiert werden.
Hinweis |
---|
Beim Einfügen von Daten vom Typ char und wchar in eine image-Spalte wird die Größe verwendet, in der die Daten weitergegeben werden, nicht die Größe der Daten nach der Konvertierung in ein binäres Format. |
Wenn der SQL Server Native Client-ODBC-Treiber einen Fehler in einem einzelnen Arrayelement eines Parameterarrays entdeckt, setzt der Treiber die Ausführung der Anweisung für die verbleibenden Arrayelemente fort. Wenn die Anwendung ein Array mit Parameterstatuselementen für die Anweisung gebunden hat, können die Zeilen der Parameter, die Fehler generieren, aus dem Array ermittelt werden.
Wenn Sie den SQL Server-Native Client-ODBC-Treiber verwenden, geben Sie SQL_PARAM_INPUT an, wenn Eingabeparameter gebunden werden. Geben Sie nur SQL_PARAM_OUTPUT oder SQL_PARAM_INPUT_OUTPUT an, wenn mit dem OUTPUT-Schlüsselwort definierte gespeicherte Prozedurparameter gebunden werden.
SQLRowCount ist zusammen mit dem SQL Server Native Client-ODBC-Treiber unzuverlässig, wenn ein Arrayelement aus einem Array mit gebundenen Parametern einen Fehler bei der Anweisungsausführung verursacht. Das ODBC-Anweisungsattribut SQL_ATTR_PARAMS_PROCESSED_PTR meldet die Anzahl von Zeilen, die vor dem Auftreten des Fehler verarbeitet wurden. Die Anwendung kann dann das Parameterstatusarray durchlaufen, um ggf. die Anzahl erfolgreich verarbeiteter Anweisungen zu ermitteln.
Binden von Parametern für SQL-Zeichentypen
Wenn es sich beim dem übergebenen SQL-Datentyp um einen Zeichentyp handelt, ist ColumnSize die Größe in Zeichen (nicht Byte). Übersteigt die Länge der Datenzeichenfolge in Byte 8.000, muss ColumnSize auf SQL_SS_LENGTH_UNLIMITED festgelegt werden. Dies bedeutet, dass keine Größenbeschränkung für den SQL-Typ gilt.
Wenn der SQL-Datentyp beispielsweise SQL_WVARCHAR ist, darf der Wert für ColumnSize nicht 4.000 übersteigen. Wenn die tatsächliche Datenlänge über 4.000 Zeichen hinausgeht, muss ColumnSize auf SQL_SS_LENGTH_UNLIMITED festgelegt werden, damit vom Treiber nvarchar(max) verwendet wird.
SQLBindParameter und Tabellenwertparameter
Ebenso wie andere Parametertypen werden Tabellenwertparameter von SQLBindParameter gebunden.
Nachdem ein Tabellenwertparameter gebunden wurde, werden seine Spalten ebenfalls gebunden. Zum Binden der Spalten rufen Sie SQLSetStmtAttr auf, um SQL_SOPT_SS_PARAM_FOCUS auf die Ordnungszahl des Tabellenwertparameters festzulegen. Rufen Sie dann SQLBindParameter im Tabellenwertparameter für jede Spalte auf. Um zu den Parameterbindungen der obersten Ebene zurückzukehren, legen Sie SQL_SOPT_SS_PARAM_FOCUS auf 0 fest.
Weitere Informationen zum Zuordnen von Parametern zu Deskriptorfeldern für Tabellenwertparameter finden Sie unter Bindung und Datenübertragung von Tabellenwertparametern und Spaltenwerten.
Weitere Informationen zu Tabellenwertparametern finden Sie unter Tabellenwertparameter (ODBC).
SQLBindParameter-Unterstützung für erweiterte Features für Datum und Uhrzeit
Parameterwerte von Datum-/Uhrzeit-Typen werden konvertiert, wie in Konvertierungen von C in SQL beschrieben. Beachten Sie, dass für Parameter vom Typ time und datetimeoffset der Parameter ValueType als SQL_C_DEFAULT oder SQL_C_BINARY angegeben werden muss, wenn die entsprechenden Strukturen (SQL_SS_TIME2_STRUCT und SQL_SS_TIMESTAMPOFFSET_STRUCT) verwendet werden.
Weitere Informationen finden Sie unter Datums-/Uhrzeitverbesserungen (ODBC).
SQLBindParameter-Unterstützung für große CLR-UDTs
SQLBindParameter unterstützt große benutzerdefinierte CLR-Typen (UDTs). Weitere Informationen finden Sie unter Große benutzerdefinierte CLR-Typen (ODBC).