Freigeben über


SQLBindParameter

SQLBindParameterkann den Aufwand für die Datenkonvertierung überflüssig machen, wenn sie zum Bereitstellen von Daten für den SQL Server Native Client ODBC-Treiber verwendet wird, was zu erheblichen Leistungssteigerungen sowohl für die Client- als auch für die Serverkomponenten von Anwendungen führt. 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 <legacyBold>image</legacyBold>-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 beim SQL Server Native Client ODBC-Treibers ein Fehler für ein einzelnes Arrayelement eines Arrays von Parametern auftritt, führt der Treiber die Anweisung für die verbleibenden Arrayelemente weiter aus. 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 beim Binden von Eingabeparametern SQL_PARAM_INPUT an. 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 mit dem SQL Server Native Client ODBC-Treiber unzuverlässig, wenn ein Arrayelement eines Bound-Parameter-Arrays 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 der übergebene SQL-Datentyp ein Zeichentyp ist, entspricht ColumnSize der Größe in Zeichen (nicht Bytes). Wenn die Länge der Datenzeichenfolge in Bytes größer als 8.000 ist, sollte ColumnSize auf SQL_SS_LENGTH_UNLIMITEDfestgelegt werden, was angibt, dass die Größe des SQL-Typs nicht begrenzt ist.

Wenn der SQL-Datentyp für instance istSQL_WVARCHAR, sollte ColumnSize nicht größer als 4000 sein. Wenn die tatsächliche Datenlänge größer als 4000 ist, sollte ColumnSize auf SQL_SS_LENGTH_UNLIMITED festgelegt werden, damit der nvarchar(max) Treiber verwendet wird.

SQLBindParameter und Tabellenwertparameter

Wie andere Parametertypen werden Tabellenwertparameter durch SQLBindParameter gebunden.

Nachdem ein Tabellenwertparameter gebunden wurde, werden seine Spalten ebenfalls gebunden. Um die Spalten zu binden, rufen Sie SQLSetStmtAttr auf, um SQL_SOPT_SS_PARAM_FOCUS auf die Ordnungszahl des Tabellenwertparameters festzulegen. Rufen Sie dann SQLBindParameter für jede Spalte im Tabellenwertparameter auf. Um zu den Parameterbindungen der obersten Ebene zurückzukehren, legen Sie SQL_SOPT_SS_PARAM_FOCUS auf 0 fest.

Informationen zum Zuordnen von Parametern zu Deskriptorfeldern für Tabellenwertparameter finden Sie unter Bindung und Datenübertragung von Table-Valued Parametern und Spaltenwerten.

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

SQLBindParameter-Unterstützung für erweiterte Funktionen für Datum und Uhrzeit

Parameterwerte von Datums-/Uhrzeittypen werden wie unter Konvertierungen von C in SQL beschrieben konvertiert. Beachten Sie, dass Parameter vom Typ time und datetimeoffsetValueType als SQL_C_DEFAULT oder SQL_C_BINARY angegeben sein müssen, wenn ihre entsprechenden Strukturen (SQL_SS_TIME2_STRUCT und SQL_SS_TIMESTAMPOFFSET_STRUCT) verwendet werden.

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

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

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

Weitere Informationen

ODBC API Implementation Details
SQLBindParameter-Funktion