Verwenden von Anweisungsparametern: Binden von Parametern
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Jede Parametermarkierung in einer SQL-Anweisung muss einer Variablen in der Anwendung zugeordnet oder gebunden sein, bevor die Anweisung ausgeführt werden kann. Dazu rufen Sie die SQLBindParameter-Funktion auf. SQLBindParameter beschreibt die Programmvariable (Adresse, C-Datentyp usw.) für den Treiber. Ferner identifiziert sie die Parametermarkierung durch Angabe ihres Ordinalwerts und beschreibt anschließend die Eigenschaften des SQL-Objekts, das sie darstellt (SQL-Datentyp, Genauigkeit usw.).
Parametermarkierungen können vor der Ausführung einer Anweisung jederzeit gebunden bzw. neu gebunden werden. Eine Parameterbindung bleibt wirksam, bis eines der folgenden Ereignisse eintritt:
Ein Aufruf von SQLFreeStmt mit dem Parameter Option, der auf SQL_RESET_PARAMS festgelegt ist, gibt alle Parameter frei, die an das Anweisungshandle gebunden sind.
Ein Aufruf von SQLBindParameter , wobei ParameterNumber auf das Ordinal einer gebundenen Parametermarkierung festgelegt ist, löst automatisch die vorherige Bindung aus.
Eine Anwendung kann auch Parameter an Arrays von Programmvariablen binden, um eine SQL-Anweisung in Batches zu verarbeiten. Es gibt zwei Arten der Arraybindung:
Die spaltenweise Bindung ist fertig gestellt, wenn jeder einzelne Parameter an sein eigenes Array von Variablen gebunden wurde.
Die spaltenweise Bindung wird durch Aufrufen von SQLSetStmtAttr mit Attribut festgelegt auf SQL_ATTR_PARAM_BIND_TYPE und ValuePtr auf SQL_PARAM_BIND_BY_COLUMN angegeben.
Die zeilenweise Beendung ist fertig gestellt, wenn alle Parameter in der SQL-Anweisung als Einheit an ein Array von Strukturen gebunden wurden, die die einzelnen Variablen für die Parameter enthalten.
Zeilenweise Bindung wird durch Aufrufen von SQLSetStmtAttr mit Attribut festgelegt auf SQL_ATTR_PARAM_BIND_TYPE und ValuePtr auf die Größe der Struktur angegeben, die die Programmvariablen enthält.
Wenn der SQL Server Native Client ODBC-Treiber Zeichen- oder binäre Zeichenfolgenparameter an den Server sendet, werden die Werte auf die in SQLBindParameter ColumnSize-Parameter angegebene Länge festgelegt. Wenn eine ODBC 2.x-Anwendung 0 für ColumnSize angibt, legt der Treiber den Parameterwert auf die Genauigkeit des Datentyps fest. Die Genauigkeit ist 8000, wenn eine Verbindung mit SQL Server-Servern hergestellt wird, 255, wenn eine Verbindung mit früheren Versionen von SQL Server besteht. ColumnSize ist in Byte für Variantenspalten.
SQL Server unterstützt das Definieren von Namen für gespeicherte Prozedurparameter. ODBC 3.5 hat auch Unterstützung für benannte Parameter eingeführt, die beim Aufrufen von gespeicherten SQL Server-Prozeduren verwendet werden. Diese Unterstützung kann für Folgendes verwendet werden:
Zum Aufrufen einer gespeicherten Prozedur und Eingeben von Werten für eine Teilmenge der für die gespeicherte Prozedur definierten Parameter
Zum Angeben der Parameter in einer anderen Reihenfolge in der Anwendung als in der Reihenfolge, in der sie bei der Erstellung der gespeicherten Prozedur angegeben wurden
Benannte Parameter werden nur unterstützt, wenn sie die Transact-SQL EXECUTE-Anweisung oder die ODBC CALL-Escapesequenz zum Ausführen einer gespeicherten Prozedur verwenden.
Wenn SQL_DESC_NAME für einen Parameter für gespeicherte Prozeduren festgelegt ist, sollten auch alle Parameter für gespeicherte Prozeduren in der Abfrage SQL_DESC_NAME festgelegt werden. Wenn Literale in gespeicherten Prozeduraufrufen verwendet werden, wobei Parameter SQL_DESC_NAME festgelegt haben, sollten die Literale das Format "Name=value" verwenden, wobei name der Name der gespeicherten Prozedurparametername ist (z@p1). B. . . Weitere Informationen finden Sie unter Binding Parameters by Name (Named Parameters).