Zuweisen von Speicher
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Eine Anwendung kann vor oder nach der Ausführung einer SQL-Anweisung Speicher für Ergebnisse zuweisen. Wenn eine Anwendung die SQL-Anweisung zum ersten Mal vorbereitet oder ausführt, kann sie Informationen zum Resultset einholen, bevor sie Speicher für die Ergebnisse zuweist. Wenn das Resultset beispielsweise unbekannt ist, muss die Anwendung die Anzahl der Spalten abrufen, bevor sie diesen Speicher zuweisen kann.
Zum Zuordnen des Speichers für eine Datenspalte ruft eine Anwendung SQLBindCol auf und übergibt sie:
Den Datentyp, in den die Daten konvertiert werden sollen.
Die Adresse eines Ausgabepuffers für die Daten.
Die Anwendung muss Speicher für diesen Puffer zuweisen, und der Puffer muss so groß sein, dass die Daten in dem Format, in das sie konvertiert werden sollen, darin Platz finden.
Die Länge des Ausgabepuffers.
Dieser Wert wird ignoriert, wenn die zurückgegebenen Daten über eine feste Breite in C verfügen, z. B. eine ganze Zahl, reelle Zahl oder Datumsstruktur.
Die Adresse eines Speicherpuffers, in den die Anzahl von Bytes verfügbarer Daten zurückgegeben werden soll.
Eine Anwendung kann auch Resultsetspalten an Arrays von Programmvariablen binden, um das Abrufen von Resultsetzeilen in Blöcken zu unterstützen. Es gibt zwei verschiedene Arten der Arraybindung:
Die spaltenweise Bindung ist fertig gestellt, wenn jede Spalte an sein eigenes Array von Variablen gebunden wurde.
Spaltenweise Bindung wird durch Aufrufen von SQLSetStmtAttr mit Attribut auf SQL_ATTR_ROW_BIND_TYPE und ValuePtr auf SQL_BIND_BY_COLUMN festgelegt. Alle Arrays müssen über die gleiche Anzahl von Elementen verfügen.
Die zeilenweise Bindung 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 auf SQL_ATTR_ROW_BIND_TYPE und ValuePtr auf die Größe der Struktur festgelegt, die die Variablen enthält, die die Resultsetspalten empfangen.
Die Anwendung legt zudem SQL_ATTR_ROW_ARRAY_SIZE auf die Anzahl der Elemente im Spalten- oder Zeilenarray sowie SQL_ATTR_ROW_STATUS_PTR und SQL_ATTR_ROWS_FETCHED_PTR fest.