Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine Anweisung lässt sich am einfachsten als SQL-Anweisung verstehen, beispielsweise SELECT * FROM Employee. Eine Anweisung ist jedoch mehr als nur eine SQL-Anweisung – sie besteht aus allen Informationen, die dieser SQL-Anweisung zugeordnet sind, z. B. alle Resultsets, die von der Anweisung und den Parametern erstellt wurden, die bei der Ausführung der Anweisung verwendet werden. Eine Anweisung muss nicht einmal über eine anwendungsdefinierte SQL-Anweisung verfügen. Wenn beispielsweise eine Katalogfunktion wie SQLTables für eine Anweisung ausgeführt wird, wird eine vordefinierte SQL-Anweisung ausgeführt, die eine Liste von Tabellennamen zurückgibt.
Jedes Statement wird durch ein Statement-Handle identifiziert. Eine Anweisung ist einer einzelnen Verbindung zugeordnet, und es können mehrere Anweisungen für diese Verbindung vorhanden sein. Einige Faktoren begrenzen die Anzahl aktiver Anweisungen, die sie unterstützen; die option SQL_MAX_CONCURRENT_ACTIVITIES in SQLGetInfo gibt an, wie viele aktive Anweisungen ein Treiber für eine einzelne Verbindung unterstützt. Eine Anweisung gilt als aktiv, wenn noch Ergebnisse ausstehen, wobei Ergebnisse entweder eine Ergebnismenge oder die Anzahl der Zeilen sind, die von einer INSERT-, UPDATE- oder DELETE-Anweisung betroffen sind, oder wenn Daten durch mehrere Aufrufe von SQLPutData gesendet werden.
In einem Codeteil, der ODBC implementiert (der Driver Manager oder ein Treiber), identifiziert das Statementhandle eine Struktur, die Informationen zur Anweisung enthält, z. B.:
Der Status der Aussage
Die aktuellen Diagnosen auf Anweisungsebene
Die Adressen der Anwendungsvariablen, die an die Parameter und Resultsetspalten der Anweisung gebunden sind
Die aktuellen Einstellungen der Attribute jeder einzelnen Anweisung
Statementhandles werden von den meisten ODBC-Funktionen verwendet. Insbesondere werden sie in den Funktionen verwendet, um Parameter und Spalten von Ergebnismengen zu binden (SQLBindParameter und SQLBindCol), SQL-Anweisungen vorzubereiten und auszuführen (SQLPrepare, SQLExecute und SQLExecDirect), Metadaten abzurufen (SQLColAttribute und SQLDescribeCol), Ergebnisse abzurufen (SQLFetch) und Diagnoseinformationen abzurufen (SQLGetDiagField und SQLGetDiagRec). Sie werden auch in Katalogfunktionen (SQLColumns, SQLTables usw.) und einer Reihe anderer Funktionen verwendet.
Statement-Handles werden mit SQLAllocHandle zugewiesen und mit SQLFreeHandle freigegeben.