Freigeben über


SQLBindParameter

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

SQLBindParameter kann die Belastung der Datenkonvertierung beseitigen, 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 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 Char - und Wchar-Typdaten in eine Bildspalte wird die Größe der übergebenen Daten verwendet, im Gegensatz zur Größe der Daten nach der Konvertierung in ein Binärformat.

Wenn der ODBC-Treiber des nativen SQL Server-Clients auf einen Fehler in einem einzelnen Arrayelement eines Arrays von Parametern stößt, 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.

Geben Sie bei Verwendung des SQL Server Native Client ODBC-Treibers 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 mit dem SQL Server Native Client ODBC-Treiber unzuverlässig, wenn ein Arrayelement eines gebundenen Parameterarrays einen Fehler in 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, ist ColumnSize die Größe in Zeichen (nicht Byte). Wenn die Länge der Datenzeichenfolge in Byte größer als 8000 ist, sollte ColumnSize auf SQL_SS_LENGTH_UNLIMITED festgelegt werden, was angibt, dass es keine Beschränkung auf die Größe des SQL-Typs gibt.

Wenn der SQL-Datentyp beispielsweise SQL_WVARCHAR ist, 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, sodass nvarchar(max) vom Treiber verwendet wird.

SQLBindParameter und Tabellenwertparameter

Wie andere Parametertypen sind tabellenwertige Parameter von 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 Parameter mit Tabellenwert 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 Beschreibungsfeldern für Tabellenwertparameter finden Sie unter Binding and Data Transfer of Table-Valued Parameters and Column Values.

Weitere Informationen zu Tabellenwertparametern finden Sie unter "Table-Valued Parameters (ODBC)".

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

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

Weitere Informationen finden Sie unter "Datums- und 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 "Large CLR User-Defined Types (ODBC)".

Weitere Informationen

ODBC-API-Implementierungsdetails
SQLBindParameter-Funktion