SQLRowCount-Funktion
Konformität
Eingeführte Version: ODBC 1.0-Standards Compliance: ISO 92
Zusammenfassung
SQLRowCount gibt die Anzahl der Zeilen zurück, die von einer UPDATE-, INSERT- oder DELETE-Anweisung betroffen sind. ein SQL_ADD-, SQL_UPDATE_BY_BOOKMARK- oder SQL_DELETE_BY_BOOKMARK-Vorgang in SQLBulkOperations; oder ein SQL_UPDATE- oder SQL_DELETE-Vorgang in SQLSetPos.
Syntax
SQLRETURN SQLRowCount(
SQLHSTMT StatementHandle,
SQLLEN * RowCountPtr);
Argumente
StatementHandle
[Eingabe] Anweisungshandle.
RowCountPtr
[Ausgabe] Verweist auf einen Puffer, in dem eine Zeilenanzahl zurückgegeben werden soll. Für UPDATE-, INSERT- und DELETE-Anweisungen, für die SQL_ADD-, SQL_UPDATE_BY_BOOKMARK- und SQL_DELETE_BY_BOOKMARK-Vorgänge in SQLBulkOperations sowie für die SQL_UPDATE- oder SQL_DELETE-Vorgänge in SQLSetPos ist der in *RowCountPtr zurückgegebene Wert entweder die Anzahl der Zeilen, die von der Anforderung betroffen sind, oder -1, wenn die Anzahl der betroffenen Zeilen nicht verfügbar ist.
Wenn SQLExecute, SQLExecDirect, SQLBulkOperations, SQLSetPos oder SQLMoreResults aufgerufen wird, wird das SQL_DIAG_ROW_COUNT Feld der Diagnosedatenstruktur auf die Zeilenanzahl festgelegt, und die Zeilenanzahl wird implementierungsabhängig zwischengespeichert. SQLRowCount gibt den zwischengespeicherten Zeilenzählerwert zurück. Der Wert für die zwischengespeicherte Zeilenanzahl ist gültig, bis das Anweisungshandle auf den vorbereiteten oder zugeordneten Zustand zurückgesetzt, die Anweisung erneut ausgeführt oder SQLCloseCursor aufgerufen wird. Wenn eine Funktion aufgerufen wurde, seit das SQL_DIAG_ROW_COUNT Feld festgelegt wurde, unterscheidet sich der von SQLRowCount zurückgegebene Wert möglicherweise vom Wert im feld SQL_DIAG_ROW_COUNT, da das SQL_DIAG_ROW_COUNT Feld durch jeden Funktionsaufruf auf 0 zurückgesetzt wird.
Für andere Anweisungen und Funktionen kann der Treiber den in *RowCountPtr zurückgegebenen Wert definieren. Beispielsweise können einige Datenquellen die Anzahl der Zeilen zurückgeben, die von einer SELECT-Anweisung oder einer Katalogfunktion vor dem Abrufen der Zeilen zurückgegeben werden.
Hinweis
Viele Datenquellen können die Anzahl der Zeilen in einem Resultset nicht zurückgeben, bevor sie abgerufen werden. Für maximale Interoperabilität sollten Anwendungen dieses Verhalten nicht verwenden.
Gibt zurück
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR oder SQL_INVALID_HANDLE.
Diagnose
Wenn SQLRowCount SQL_ERROR oder SQL_SUCCESS_WITH_INFO zurückgibt, kann ein zugeordneter SQLSTATE-Wert abgerufen werden, indem SQLGetDiagRec mit einem HandleType von SQL_HANDLE_STMT und einem Handle von StatementHandle aufgerufen wird. In der folgenden Tabelle sind die SQLSTATE-Werte aufgeführt, die häufig von SQLRowCount zurückgegeben werden, und die einzelnen Werte werden im Kontext dieser Funktion erläutert. die Notation "(DM)" steht vor den Beschreibungen von SQLSTATEs, die vom Treiber-Manager zurückgegeben werden. Der Rückgabecode, der jedem SQLSTATE-Wert zugeordnet ist, ist SQL_ERROR, sofern nicht anders angegeben.
SQLSTATE | Fehler | BESCHREIBUNG |
---|---|---|
01000 | Allgemeine Warnung | Treiberspezifische Informationsmeldung. (Funktion gibt SQL_SUCCESS_WITH_INFO zurück.) |
HY000 | Allgemeiner Fehler | Es ist ein Fehler aufgetreten, für den kein spezifischer SQLSTATE-Wert vorhanden war und für den keine implementierungsspezifische SQLSTATE definiert wurde. Die von SQLGetDiagRec im *MessageText-Puffer zurückgegebene Fehlermeldung beschreibt den Fehler und seine Ursache. |
HY001 | Fehler bei der Speicherbelegung | Der Treiber konnte keinen Arbeitsspeicher zuordnen, der für die Unterstützung der Ausführung oder Fertigstellung der Funktion erforderlich ist. |
HY010 | Funktionssequenzfehler | (DM) Eine asynchron ausgeführte Funktion wurde für das Verbindungshandle aufgerufen, das dem StatementHandle zugeordnet ist. Diese asynchrone Funktion wurde noch ausgeführt, als die FUNKTION SQLRowCount aufgerufen wurde. (DM) SQLExecute, SQLExecDirect oder SQLMoreResults wurde für statementHandle aufgerufen und SQL_PARAM_DATA_AVAILABLE zurückgegeben. Diese Funktion wurde aufgerufen, bevor Daten für alle gestreamten Parameter abgerufen wurden. (DM) Die Funktion wurde vor dem Aufruf von SQLExecute, SQLExecDirect, SQLBulkOperations oder SQLSetPos für statementHandle aufgerufen. (DM) Eine asynchron ausgeführte Funktion wurde für statementHandle aufgerufen und wurde noch ausgeführt, als diese Funktion aufgerufen wurde. (DM) SQLExecute, SQLExecDirect, SQLBulkOperations oder SQLSetPos wurde für statementHandle aufgerufen und SQL_NEED_DATA zurückgegeben. Diese Funktion wurde aufgerufen, bevor Daten für alle Daten bei der Ausführungsparameter oder -spalten gesendet wurden. |
HY013 | Fehler bei der Speicherverwaltung | Der Funktionsaufruf konnte nicht verarbeitet werden, weil auf die zugrunde liegenden Speicherobjekte nicht zugegriffen werden konnte, möglicherweise aufgrund von geringen Arbeitsspeicherbedingungen. |
HY117 | Die Verbindung wird aufgrund eines unbekannten Transaktionsstatus angehalten. Nur trenn- und schreibgeschützte Funktionen sind zulässig. | (DM) Weitere Informationen zum angehaltenen Zustand finden Sie unter SQLEndTran-Funktion. |
HYT01 | Verbindungstimeout abgelaufen | Der Zeitraum für das Verbindungstimeout ist abgelaufen, bevor die Datenquelle auf die Anforderung geantwortet hat. Der Verbindungstimeoutzeitraum wird über SQLSetConnectAttr festgelegt, SQL_ATTR_CONNECTION_TIMEOUT. |
IM001 | Treiber unterstützt diese Funktion nicht. | (DM) Der Der StatementHandle zugeordnete Treiber unterstützt die Funktion nicht. |
Kommentare
Wenn die letzte SQL-Anweisung, die für das Anweisungshandle ausgeführt wurde, keine UPDATE-, INSERT- oder DELETE-Anweisung war oder das Argument Operation im vorherigen Aufruf von SQLBulkOperations nicht SQL_ADD, SQL_UPDATE_BY_BOOKMARK oder SQL_DELETE_BY_BOOKMARK war oder das Argument Operation im vorherigen Aufruf von SQLSetPos nicht SQL_UPDATE oder SQL_DELETE war, Der Wert von *RowCountPtr ist treiberdefiniert. Weitere Informationen finden Sie unter Ermitteln der Anzahl der betroffenen Zeilen.
Verwandte Funktionen
Informationen über | Finden Sie unter |
---|---|
Ausführen einer SQL-Anweisung | SQLExecDirect-Funktion |
Ausführen einer vorbereiteten SQL-Anweisung | SQLExecute-Funktion |